序号 | 分类 | 作用 | 命令 |
---|---|---|---|
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 这四种数据结构是容器型数据结构,它们共享下面两条通用规则:
- create if not exists 如果容器不存在,那就创建一个,再进行操作。
- drop if no elements 如果容器里元素没有了,那么立即删除元素,释放内存。
- 启动redis
- redis-server
- 修改默认端口
- redis-server —port 6380
- 停止redis
- redis-cli SHUTDOWN
- 或者kill redis的pid号
- 通过-h和-p参数可以自定义连接redis
- redis-cli -h 127.0.0.1 -p 6379
- 不加就是默认的
- 请求多个
- KEYS *
- 删除key
- DEL bar
- 获得键值的类型
- type bar
- 设置key
- set key bar
- 判断keys是否存在
- EXISTS bar(存在返回1,否则0)
- 获取
- get key
- 当key为整数时,可以让键自增
- incr num
- 增加制定的数值
- incrby bar 3
- 减少制定的数
- decrby key decrement
- 向尾部追加值
- append key “fds”
- 获取字符串长度(不存在返回0)
- strlen key
- 将键 foo变为 bar
- set foo bar
- 设置过期时间
- expire key 5 # 5s 后过期
- 设置过期时间升级版本
- setex name 5 codehole # 5s 后过期,等价于 set+expire
- 右边进左边出:队列
- rpush books python java golang
- lpop books
- 右边进右边出:栈
- rpush books python java golang
- rpop books
- 存hash
- hset books java “thing in java”
- hget books (取,分别出现键值)
- set集合
- Redis 的集合相当于 Java 语言里面的 HashSet
- sadd books python
- sadd books java golang (添加多个值)
- smembers books # 注意顺序,和插入的并不一致,因为 set 是无序的
- sismember books java # 查询某个 value 是否存在,相当于 contains(o)
- scard books # 获取长度相当于 count()
- 它类似于Java的SortedSet和HashMap的结合体,一方面它是一个set,保证了内部value的唯一性,另一方面它可以给每个value赋予一个score,
- 批量设置多个字符串,节约网络开销
- mset name1 boy name2 girl
- 批量获取多个个字符串
- 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
- mget name1 name2
- list/set/hash/zset 这四种数据结构是容器型数据结构
- create if not exists
- drop if no elements
- 分布式锁
- set lock true ex 5 nx
- 用来统计指定位置范围内 1 的个数(位图)
- bitcount 字符串
- 查找指定范围内出现的第一个 0 或 1
- bitpos 字符串 0 (第一个 0 位)
- bitpos 字符串 1 (第一个 1 位)
- 查看key剩余的时间
- ttl key
- 设置位数组
- setbit s 1 1 (设置s的第一位为1)
- 批量删除前缀key
- redis-cli -h 10.170.124.67 keys “WARECTU*” | xargs redis-cli -h 10.170.124.67 del
- 在redis客户端查看最新插入的redis数据以及插入时间?
- monitor