redis 常用命令整理-详细

清空当前数据库:flushdb

1、string (字符串)

相当于 Java 的 ArrayList

单个操作

> set name "xiaowang"
OK

> get name 
"xiaowang"

> exists name
(integer) 1

> del name
(integer) 1

> get name
(nil)

批量操作

在单操作前面加 m就表示批量操作,del除外

> mset name1 xiaowang name2 xiaoli name3 xiaozhang
OK

> mget name1 name2 name3
1) "xiaowang"
2) "xiaoli"
3) "xiaozhang"

> del name1 name2 name3
(integer) 3

设置过期时间

# 对已经存在的数据设置过期时间
> set name xiaowang
OK
> expire name 5     # 5s后过期
(integer) 1
> get name
(nil)

# 添加数据时,同时对其设置过期时间
> setex name 5 xiaoai    # setex就是 set + expire
OK
    
> ttl name     #显示剩余寿命
(integer) 4

不存在时才添加

> setnx name xiaoai  #如果name不存在就执行set创建
(integer) 1或者0

> set name xiaoai
> set name xiaohao   #set覆盖
> get name
"xiaohao"

计数

自增是有范围的,在 signed long 的最大值和最小值之间

> set age 30
OK

> incr age
(integer) 31

> incrby age -5   //在redis客户端有效果,但是在jedis中没有效果
(integer) 26

> decr age   //自减
(integer) 25

 

2、list (列表)

相当于 Java 的LinkedList

 rpush 、lpush

rpop、lpop

一边进,一边出:栈

一边进,另一边出:队列

队列(右边进、左边出)

> rpush books python java golang    #将python、java、golang放入列表books中(右边进)
(integer) 3

> llen books     #计算列表books的大小
(integer) 3

> lpop books     #左边出
"python"
> lpop books
"java"
> lpop books
"golang"

栈(右边进、右边出)

> rpush books python java golang    #将python、java、golang放入列表books中(右边进)
(integer) 3

> llen books     #计算列表books的大小
(integer) 3

> lpop books     #右边出
"golang"
> lpop books
"java"
> lpop books
"python"

慢操作

索引都是从 0 开始

lindex(int) 

lrange(int start, int end)  :显示范围内的数据

ltrim(int start, int end) : 将不再范围内的数据删除

> rpush books python java golang
(integer) 3

> lindex books 1  # O(n)
"java"

> lrange books 0 -1   #从0(第一个)到-1(倒数第一)全部显示出来
1) "python"
2) "java"
3) "golang"

> ltrim books 1 -1    # 将不在范围(1,2...倒数第一)内的数据删除(就是删掉第一个数据)
OK
> lrange books 0 -1
1) "java"
2) "golang"

> ltrim books 1 0  # 长度范围为负数,就是亲空整个列表
OK

 

3、hash (字典)

相当于 Java 里面的 HashMap

渐进式rehash策略

单操作

> hset books java "think in java"
(integer) 1

> hset books golang "concurrent in golang"
(integer) 2

> hgetall books   # key value 间隔出现
"java"
"think in java"
"golang"
"concurrent in golang"

> hlen books   # 字典大小
(integer) 2

> hget books java   # 获取"java"对应的value
"think in java"

> hset book golang "learning golang"   #更新操作,返回0
(integer) 0 

批量操作

> hmset books java "think in java" python "learning python"
OK

计数

同字符串一样,hash结构中的单个key也可以计数

> hset user-age age 29
(integer) 1

> hincrby user-age age 5
(integer) 34

 

4、set (集合)

相当于 Java 中的HashSet

> sadd books python java golang
(integer) 1
> sadd books python   #失败,集合中不允许元素重复
(integer) 0

> smember books   # 显示集合中所有元素,集合是无序的
1) "java"
2) "python"
3) "golang"

> sismember books java  #查询某个value是否存在
(integer) 1

> scard books    #获取长度
(integer) 3

> spop books     #随机弹出一个
"java"

 

5、zset (有序列表)

类似于 Java 中的 SortedSet + HashMap

> zadd books 9.0 "thhink in java"
(integer) 1
> zadd books 8.9 "java concurrent"
(integer) 1
> zadd books 8.6 "java cookbook"
(integer) 1

> zrange books 0 -1    #列出范围内的元素,默认是从小到大!!!
1) "java cookbook"
2) "java concurrent"
3) "think in java"

> zrevrange books 0 -1  #反序列出范围内元素
1) "think in java"
2) "java concurrent"
3) "java cookbook"

> zcard books    #count()
(integer) 3

> zscore books "java concurrent"     #获取指定value的score
"8.9000000000000004"     #内部score使用的double类型进行存储,小数点精度问题

> zrank books "java concurrent"      #排名,从0开始!!!
(integer) 1

> zrangebyscore books 0 8.91          #根据score遍历zset
1) "java cookbook"
2) "java concurrent"

> zrangebyscore books -inf 8.91 withscores   #根据分值区间遍历zset,同时返回score;inf表示无穷大
1) "java cookbook"
2) "8.599999999999996"
3) "java concurrent"
4) "8.900000000000004"

> zrem books "java concurrent"     #删除value
(integer) 1

 

7、HyperLogLog   精度不高的统计数据

在redis2.8.9中才开始有,在2.8.9中:pfadd name a 会报错,至少要2个

> pfadd name a b c   //增加记录信息
(integer) 1

> pfcount name
(integer) 3

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值