序号 分类 作用 命令
0 string set 一个值 set name codehole
1 get 一个值,空值返回nil get name
2 是否存在,存在返回1,否则0 exists name
3 删除 值 del name
4 批量读,name是key mget name1 name2 name3
5 批量写 mset name1 boy name2 girl name3 unknown
7 期初设置初始值 setex name 5 codehole
8 如果 name 不存在就执行 set 创建,不存在返回1 setnx name codehole
9 计数 设置初始值 set age 30
10 新增1 (最大值9223372036854775807) incr age
11 新增5;减少5 incr age 5 incr age -5
12 队列 入队列 rpush books python java golang
13 获取队列长度 llen books
14 出队列(先出Python) lpop books
15 入栈 rpush books python java golang
16 出栈(先出golang) rpop books
17 获取index=1的栈值(O(n),慎用) 输出java lindex books 1
18 获取所有元素,O(n) 慎用 lrange books 0 -1
19 清空列表 ltrim books 1 0
20 hash 设置值 hset books java “think in java”
21 获取值 hgetall books
22 获取长度 hlen books
23 set 设置值 sadd books python
24 获取值 smembers books
25 查看是否存在,存在返回1 sismember books java
26 获取长度 scard books
27 zset 设置值 zadd books 9.0 “think in java”
zadd books 8.9 “java concurrency”
28 按 score 排序列出 zrange books 0 -1
29 按 score 逆序列出,参数区间为排名范围 zrevrange books 0 -1
30 求长度 zcard books
31 获取指定 value 的 score zscore books “java concurrency”
32 排名 zrank books “java concurrency”
33 根据分值区间遍历 zset zrangebyscore books 0 8.91
34 根据分值区间 (-∞, 8.91] 遍历 zset,同时返回分值。inf 代表 infinite,无穷大的意思。 zrangebyscore books -inf 8.91 withscores
35 删除 value,成功返回1 zrem books “java concurrency”
6 通用 设置过期时间 5s,key存在返回1 expire name 5
查看过期时间 ttl name

容器型数据结构的通用规则

list/set/hash/zset 这四种数据结构是容器型数据结构,它们共享下面两条通用规则:

  1. create if not exists 如果容器不存在,那就创建一个,再进行操作。
  2. drop if no elements 如果容器里元素没有了,那么立即删除元素,释放内存。
  1. 启动redis
    • redis-server
  2. 修改默认端口
    • redis-server —port 6380
  3. 停止redis
    • redis-cli SHUTDOWN
    • 或者kill redis的pid号
  4. 通过-h和-p参数可以自定义连接redis
    • redis-cli -h 127.0.0.1 -p 6379
    • 不加就是默认的
  5. 请求多个
    • KEYS *
  6. 删除key
    • DEL bar
  7. 获得键值的类型
    • type bar
  8. 设置key
    • set key bar
  9. 判断keys是否存在
    • EXISTS bar(存在返回1,否则0)
  10. 获取
    • get key
  11. 当key为整数时,可以让键自增
    • incr num
  12. 增加制定的数值
    • incrby bar 3
  13. 减少制定的数
    • decrby key decrement
  14. 向尾部追加值
    • append key “fds”
  15. 获取字符串长度(不存在返回0)
    • strlen key
  16. 将键 foo变为 bar
    • set foo bar
  17. 设置过期时间
    • expire key 5 # 5s 后过期
  18. 设置过期时间升级版本
    • setex name 5 codehole # 5s 后过期,等价于 set+expire
  19. 右边进左边出:队列
    • rpush books python java golang
    • lpop books
  20. 右边进右边出:栈
    • rpush books python java golang
    • rpop books
  21. 存hash
    • hset books java “thing in java”
    • hget books (取,分别出现键值)
  22. set集合
    • Redis 的集合相当于 Java 语言里面的 HashSet
    • sadd books python
    • sadd books java golang (添加多个值)
    • smembers books # 注意顺序,和插入的并不一致,因为 set 是无序的
    • sismember books java # 查询某个 value 是否存在,相当于 contains(o)
    • scard books # 获取长度相当于 count()
  23. 它类似于Java的SortedSet和HashMap的结合体,一方面它是一个set,保证了内部value的唯一性,另一方面它可以给每个value赋予一个score,
  24. 批量设置多个字符串,节约网络开销
    • mset name1 boy name2 girl
  25. 批量获取多个个字符串
    • mget name1 name2
      代表这个 value 的排序权重。它的内部实现用的是一种叫做「跳跃列表」的数据结构。
    • zset 可以用来存粉丝列表,value 值是粉丝的用户 ID,score 是关注时间。我们可以对粉丝列表按关注时间进行排序。
    • zadd books 8.9 “java concurrency”
    • zadd books 8.6 “java cookbook”
    • zrange books 0 -1 # 按 score 排序列出,参数区间为排名范围
    • zrevrange books 0 -1 # 按 score 逆序列出,参数区间为排名范围
    • zcard books # 相当于 count()
    • zscore books “java concurrency” # 获取指定 value 的 score
    • zrank books “java concurrency” # 排名
    • zrem books “java concurrency” # 删除 value
  26. list/set/hash/zset 这四种数据结构是容器型数据结构
    • create if not exists
    • drop if no elements
  27. 分布式锁
    • set lock true ex 5 nx
  28. 用来统计指定位置范围内 1 的个数(位图)
    • bitcount 字符串
  29. 查找指定范围内出现的第一个 0 或 1
    • bitpos 字符串 0 (第一个 0 位)
    • bitpos 字符串 1 (第一个 1 位)
  30. 查看key剩余的时间
    • ttl key
  31. 设置位数组
    • setbit s 1 1 (设置s的第一位为1)
  32. 批量删除前缀key
    • redis-cli -h 10.170.124.67 keys “WARECTU*” | xargs redis-cli -h 10.170.124.67 del
  1. 在redis客户端查看最新插入的redis数据以及插入时间?
    • monitor