Redis的value可以有五种存储类型。string、hash、list、set、zset(有序集合)
查看所有键: keys *
键总数 dbsize //2 个键, 如果存在大量键, 线上禁止使用此指令
检查键是否存在: exists key
删除键: del key
键过期: expire key seconds
设置键的有效时间:set name liming ex 30 //30s后该键消失
value的数据结构类型: type key
自增:incr key
自减:decr key
如果有value就不操作没有就加上该key:setnx key liming //if(key!=null) value=liming
String类型大家都非常熟悉,我再具体介绍一下另外三个的操作
Hash
命令 hset key field value
设值: hset user:1 name james //成功返回 1, 失败返回 0
取值: hget user:1 name //返回 james
删值: hdel user:1 age //返回删除的个数
计算个数: hset user:1 name james; hset user:1 age 23;
hlen user:1 //返回 2, user:1 有两个属性值
批量设值: hmset user:2 name james age 23 sex boy //返回 OK
批量取值: hmget user:2 name age sex //返回三行: james 23 boy
key下所有的值: hgetall key ///返回三行: james 23 boy
判断 field 是否存在: hexists user:2 name //若存在返回 1, 不存在返回 0
获取所有 field: hkeys user:2 // 返回 name age sex 三个 field
获取 user:2 所有 value: hvals user:2 // 返回 james 23 boy
获取 user:2 所有 field 与 value: hgetall user:2 //name age sex james 23 boy 值
增加 1: hincrby user:2 age 1 //age+1
hincrbyfloat user:2 age 2 //浮点型加 2
List
添加命令: rpush james c b a //从右向左插入 cba, 返回值 3
lrange james 0 -1 //从左到右获取列表所有元素 返回 c b a
lpush key c b a //从左向右插入 cba
linsert james before b teacher //在 b 之前插入 teacher, after 为之后, 使
用 lrange james 0 -1 查看: c teacher b a
查找命令: lrange key start end //索引下标特点: 从左到右为 0 到 N-1
lindex james -1 //返回最右末尾 a, -2 返回 b
llen james //返回当前列表长度
lpop james //把最左边的第一个元素 c 删除
rpop james //把最右边的元素 a 删除
lrem key count value//删除指定元素
如: lpush test b b b b b j x z //键 test 放入 z x j b b b b b
lrange test 0 -1 //查询结果为 z x j b b b b b
lrem test 4 b //从左右开始删除 b 的元素,删除 4 个,
若 lrem test 8 b, 删除 8 个 b, 但只有 5 个全部删除
lrange test 0 -1 //删除后的结果为 b j x zlrem test 0 b //检索所有 b 全部删除 j x z
lpush user b b b b b j x z //键 user 从左到右放入 z x j b b b b b
ltrim user 1 3 //只保留从第 2 到第 4 的元素, 其它全删
lrange user 0 -1 //查询结果为 x j b, 其它已全被删掉
lpush user01 z y x //键 user01 从左到右放入 x y z
lset user01 2 java // 把第 3 个元素 z 替换成 java
lrange user01 0 -1 //查询结果为 x y java
Set
exists user //检查 user 键值是否存在
sadd user a b c//向 user 插入 3 个元素, 返回 3
sadd user a b //若再加入相同的元素, 则重复无效, 返回 0
smembers user //获取 user 的所有元素,返回结果无序
srem user a //返回 1, 删除 a 元素
scard user //返回 2, 计算元素个数
sismember user a //判断元素是否在集合存在, 存在返回 1, 不存在 0
srandmember user 2 //随机返回 2 个元素, 2 为元素个数
spop user 2 //随机返回 2 个元素 a b,并将 a b 从集合中删除
smembers user //此时已没有 a b, 只有 c
集合的交集:
sadd user:1 zhangsan 24 girl
sadd user:2 james 24 boy//初始化两个集合
sinter user:1 user:2 //求两集合交集, 此时返回 24
sadd user:3 wang 24 girl //新增第三个元素
sinter user:1 user:2 user:3 //求三个集合的交集, 此时返回 24
集合的并集( 集合合并去重) :
sunion user:1 user:2 user:3 //三集合合并(并集), 去重 24
sdiff user:1 user:2//1 和 2 差集,(zhangsan 24 girl)-(james 24 boy)=zhangsan girl
Zset
zadd key score member [score member......]
zadd user:zan 200 james //james 的点赞数 1, 返回操作成功的条数 1
zadd user:zan 200 james 120 mike 100 lee// 返回 3
zadd test:1 nx 100 james //键 test:1 必须不存在, 主用于添加
zadd test:1 xx incr 200 james //键 test:1 必须存在, 主用于修改,此时为 300
zadd test:1 xx ch incr -299 james //返回操作结果 1, 300-299=1
zrange test:1 0 -1 withscores //查看点赞( 分数) 与成员名
zcard test:1 //计算成员个数, 返回 1
查点赞数
zadd test:2 nx 100 james //新增一个集合
zscore test:2 james //查看 james 的点赞数( 分数) , 返回 100
排名:
zadd user:3 200 james 120 mike 100 lee//先插入数据
zrange user:3 0 -1 withscores //查看分数与成员
zrank user:3 james //返回名次: 第 3 名返回 2, 从 0 开始到 2, 共 3 名
zrevrank user:3 james //返回 0, 反排序, 点赞数越高, 排名越前
删除成员:
zrem user:3 jame mike //返回成功删除 2 个成员, 还剩 lee
增加分数:
zincrby user:3 10 lee //成员 lee 的分数加 10
zadd user:3 xx incr 10 lee //和上面效果一样