码迷,mamicode.com
首页 > 其他好文 > 详细

Redis基础

时间:2019-10-22 11:21:09      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:字典顺序   精准   长度   sort   子串   基础   随机   单位   支持   

NoSql中的扛把子! —— Redis

Redis基础

什么是Redis

  • 属于NoSql
  • 开源 先进的key-value存储
  • 一个基于内存的网络存储系统
    redis中文网

Redis的特点

  • 性能极高,适合高并发读写
  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘里,重启的时候再次进行加载(持久)
  • Redis支持数据结构多达5种:字符串 哈希 列表 集合 有序集合(花样多)
  • Redis支持数据的备份,master-slave模式的数据备份

Redis应用场景

1、取最新 N 个数据的操作 
2、排行榜应用,取 TOP N 操作 
3、需要精准设定过期时间的应用
4、计数器应用
5、Uniq 操作,获取某段时间所有数据排重值
6、实时系统,反垃圾系统
7、Pub/Sub 构建实时消息系统
8、构建队列系统
9、缓存

一般情况

string类型:适合计数器 系统缓存(把对象 数组 串行化存入string)
Hash类型:适合做数据缓存(用户数据)
List类型:适合做数组搜索(队列系统,关注列表、粉丝列表丶数据统计)
集合类型:适合做好友推送(商品推送时)  unique操作 获取某段时间内所有数据的排重值 统计网站访问的所有独立ip
有序集合类型:适合商品排序(排行榜)    需要精准设定过期的应用(时间戳为score)    

ubuntu安装redis

1
2
3
4
$sudo apt-get update
$sudo apt-get install redis-server
$ redis-server 启动redis
$ redis-cli 查看是否启动
  • 注意:apt重新重装redis配置文件会丢失,记得备份(踩过的坑)
  • 启动与关闭
    redis-cli 开启redis
    redis-cli shutdown 关闭redis
    service redis-server restart 重启redis

Redis数据结构命令

字串类型

注意:

  • redis可以存和获取中文 需要通过redis-cli –raw
  • redis中没有表概念,所有的数据都存入键中>string键类型:所有的值(可以是任何数据类型)都保存在一个键当中,放在一个内存块中
string(字串类型) 例子
set 键 值 设置一个键和值,键存在则覆盖,返回ok set name xuyong
get 键 获取一个键,返回的是值 get name
setnx 键 值 只有当该键不存在时设置一个键的值,若键已存在则返回integer0表示失败(防止覆盖) setnx age 18
setex 键 [有效时间] 值 设置一个指定有效期的键和值(单位秒)。不写有效时间则表示永久有效,等价于set setex movie 30 白蛇:缘起
ttl 键 获取键的有效时间 , 当 key 不存在时,返回 -2 , 当 key 存在但没有设置剩余生存时间时,返回 -1 ttl movie
setrange 键 位置 子字串 替换子字符串 (替换长度由子子串长度决定) abcdefg 从c开始替换,bad. Abbadfg setrange key 2 liming p
mset 键1 值1 键2 值2 键3 值3 …. 批量设置键和值,成功则返回ok mset name1 lm name2 sc name3
msetnx 键1 值1 键2 值2 键3 值3 …. 批量设置不存在的键和值(当键不存在时候才成功),成功则返回ok msetnx b1 1 b2 2 b3 3
mget 键1 键2 键3… 批量获取值 mget name1 name2 name3
getset 键 新值 获取原值,并设置新值 getset name "liming" ,原本的shenchao变成liming
getrange 键 0 4 获取指定范围的值(获取指定0到4位置上的值,字符串位置从0开始计算 getrange key1 0 4
incr键 指定键的值做加1操作,返回加后的结果(只能加数字,非数字会报错) incr age
decr键 指定键的值做减1操作,返回减后的结果 decr age
incrby 键 m 加指定值,键不存在时候会设置键, 其中m可以是正整数或负整数 incrby age 10
decrby 键 m 同上,但是是减值 decrby age 5
append 键 追加字串 给指定key的字符串追加value,返回新字符串值的长度 append name1 " have a new computer!"
strlen键名 strlen求一个键长度 strlen name1
del命令 删除一个键 del name3

hashs类型

hash
hset 哈希集(键) 字段 值 设置一个键,在键中保存字段和值 hset key field value
hsetnx 键 字段 值 设置一个键中,不存在的字段和值。如果字段存在则报错(成功返回1,失败返回0) hsetnx user1 name1 lm
hmset 键 字段1 值1 字段2 值2 … 在一个键中,批量设置字段
$redis->hMset("user".$uid,array("uid"=>$uid,"username"=>$username)
hmset star name xuyong age 45 height 150
hget键字段 获取键中的一个指定字段的值 hget star name
hmget 键 字段 获取多个字段的值 hmget star name age height
hexists 键 字段 判断指定的字段是否存在于键中 hexists star age
hlen 获取键中的字段数量 hlen star
hkeys 获取键中的所有字段名 hkeys star
hvals 获取键中所有字段的值 hvals star
hgetall 获取键中的所有字段和值 hgetall star
hincrby 将键中指定字段的值,增加指定的数字 hincrby star age 5,
hdel 键 字段1 字段2 删除键中的一个或多个字段 ———————————————————————————————————————————————————————————————————————————————————————————–hdel star age interest大专栏  Redis基础e>

列表

list类型
lpush 键 值1 [值2…] 从左面增加 127.0.0.1:6379> lpush list1
127.0.0.1:6379> lpush list1 2
多个值一起增加 lpush list2 one two three four
lrange 键 起始下标 终止下标 lrange list1 0 -1 (查全部)
lrangelist2 -4 3 -4代表从队列右边数第四个元素, 3代表从队列左边数第四个元素
rpush 键 值1 [值2…] 同左,换个位置而已
linsert 键 before|after 原值 新值 某个位置添加 LINSERT list3 before 3 hello (在3的前面插一个hellow)
lset 键 下标 新值 修改 lset list3 2 “5” (给下标为2的键换上新值5)
lrem 键 n 指定值 删除指定值 lerm list4 -2 hello(删除后两个hello)
lrem list4 0 hello (删除所有的hello)
ltrim 键 起始下标 结束下标 修剪队列,让队列只保留指定指定范围内的元素 ltrim list5 1 2 (只保留下标为 1 和2的值)
lpop 键 从指定的队列左面移除一个值
rpop 键 从指定队列的右边移除一个值
rpoplpush 源队列 目标队列 移除源队列的最后一个元素,并把该元素写入目标队列
lindex 键 下标 获取队列中指定下标元素的值
llen 键 获得队列的长度

sets 类型和操作

Set是集合,它是string类型的无序集合。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现社交网站中的好友推荐和blog的tag功能。集合不允许有重复值

sets 类型和操作
sadd 键 值1 [值2…] 添加 sadd mset1 12 3 4 添加 1234
smembers 键 查询 smembers mset1
srem 键 值1[值2…] 删除 srem mset1 3 4 删掉了3 4 后面就只剩 1 2了
spop 键 随机从集合中删除一个元素,并返回
srandmember 键 随机返回集合中一个元素,但不删除
scard 键 获取集合里面元素个数
sismember 键 值 判断值是否存在 sismember mset1 5
sdiff 集合1 集合2 返回集合1与集合2的差集。以集合1为主
sdiffstore 新集合 集合1 集合2 返回集合1和集合2的差集,并把结果存入新集合
sinter 集合1 集合2 引 获得两个集合的交集
sinterstore 新集合 集合1 集合2 获得集合1和集合2的交集,并把结果存入新集合
sunion 集合1 集合2 获得指定集合的并集
sunionstore 新集合 集合1 集合2 获得指定集合的并集,并把结果保存如新集合
smove 源集合 目标集合 值 将指定的值从源集合移动到目标集合

sorted sets类型和操作(zset)

sorted set是set的一个升级版本,它给集合中每个元素都定义一个分数,集合中的元素按照其分数排序。也不允许有重复值

sorted sets类型和操作(zset)
zadd 键 分数1 值1 [分数2 值2…] 该命令添加指定的成员到key对应的有序集合中,每个成员都有一个分数。你可以指定多个分数/成员组合。如果一个指定的成员已经在对应的有序集合中了,那么其分数就会被更新成最新的,并且该成员会重新调整到正确的位置,以确保集合有序。分数的值必须是一个表示数字的字符串,并且可以是double类型的浮点数 zdd man 1 xuyong
zrange 集合 起始下标 截止下标 [withscores] 返回有序集合中,指定区间内的成员。其中成员按照score(分数)值从小到大排序。具有相同score值的成员按照字典顺序来排列 zrange man 0 -1
zrevrange 集合 起始下标 截止下标 [withscores] 返回有序集合中,指定区间的成员。其成员按照score从大到小来排列 zrevrange man 0 -1
起始下标与截止下标和list类型一致: 0代表队列中第一个元素,1代表第二个元素,依次类推 , -1代表队列中最后一个元素,-2代表倒数第二个元素 , withscores:返回集合中元素的同时,返回其分数(score)
zrangebyscore 集合 起始分数 截止分数 withscores 返回有序集合中score(分数)在指定区间的值 zrangebyscore man 100 1000
zrem 集合 值1 [值2…] e 删除有序集合中指定的值
zincrby 集合 增量 值 给有序集合中指定值的成员的分数(score)值加上增量(increment)。如果集合中没有这个值,则给添加一个分数是increment的值。 zincrby man -5 huanglei
zrank 集合 值 返回有序集合中指定值的下标。值按照score从小到大排序 zrank man xuyong
zrevrank 集合 值 返回有序集合中指定值的下标,值按照score从大到小排序
zcount 集合 起始分数 截止分数 返回有序集合中,score值在起始分数与截止分数之间的个数
zcard 集合 返回有序集合元素的个数
zremrangebyrank 集合 起始下标 结束下标 删除有序集合中,下标在指定区间的元素
zremrangebyscore 集合 起始分数 截止分数 删除有序集合中,分数在指定区间的元素
zinterstore 新集合 取交集的集合个数 集合1 集合2 取集合1和集合2的交集,并把结果保存到新集合中。在计算交集之前,需要指定计算交集的集合的个数。交集中,值的分数是多个集合中分数的和
zunionstore 新集合 取并集的集合个数 集合1 集合2 取集合1和集合2的并集,并把结果保存到新集合中。在计算并集之前,需要指定计算并集的集合的个数。并集中,值的分数是多个集合中分数的和。

如何通过php使用redis

  • 服务器安装redis,更改配置
  • 安装php-redis扩展
  • 知道一些基本语句
    1
    2
    3
    4
    5
    6
    <?php
    ?? $redis = new redis();??`
    ? $redis->connect('127.0.0.1', 6379);??`
    $redis->auth("123"); 使用密码做登陆验证 `
    ? $result = $redis->set('test',"11111111111");??`
    ?>

Redis基础

标签:字典顺序   精准   长度   sort   子串   基础   随机   单位   支持   

原文地址:https://www.cnblogs.com/dajunjun/p/11718113.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!