张不大的博客

Redis手册(自用)

This is a page about »Redis手册(自用)«.

redis操作手册–自用

访问redis 服务器,并测试


redis-cli -h host -p port -a password
# 如果是直接在本地访问
redis-cli

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> ping zhangbuda
"zhangbuda"
127.0.0.1:6379>

数据类型&增删改查

字符串、哈希、列表、集合、有序集合

字符串

127.0.0.1:6379> set zhangbuda 188
OK
127.0.0.1:6379> get zhangbuda
"188"
127.0.0.1:6379> del zhangbuda
(integer) 1
127.0.0.1:6379> get zhangbuda
(nil)
127.0.0.1:6379>

#######获取value 的长度(字符串) 、截取指定范围的内容(子字符串)、同时存储多个key、同时获取多个 key 的value、修改原来key的value,拼接字符串
set zhangbuda hello,world
OK
127.0.0.1:6379> get zhangbuda
"hello,world"
127.0.0.1:6379> getrange zhangbuda 2 4
"llo"
127.0.0.1:6379> getrange zhangbuda 0 4
"hello"
127.0.0.1:6379> strlen zhangbuda
(integer) 11
127.0.0.1:6379> mset zhangsan1 aaaaaa zhangsan2 bbbbbb zhangsan3 cccccc
OK
127.0.0.1:6379> mget zhangsan1 zhangsan2 zhangsan3
1) "aaaaaa"
2) "bbbbbb"
3) "cccccc"
127.0.0.1:6379> getset zhangsan1 dddddd
"aaaaaa"
127.0.0.1:6379> get zhangsan1
"dddddd"
127.0.0.1:6379> append zhangsan1 fffff
(integer) 11
127.0.0.1:6379> get zhangsan1
"ddddddfffff"
127.0.0.1:6379> strlen zhangsan1
(integer) 11

为key 设置生效时间

#在 Redis 中,EXPIRE 命令用于设置键(key)的生存时间(TTL,Time-to-Live),即指定键值对在指定的秒数后过期并自动删除。除了基本的过期时间设置,EXPIRE 命令也支持一些附加选项,如 NX、XX、GT 和 LT,用于在特定条件下设置过期时间。
# 比如在 300s 后失效
EXPIRE mykey 300
# 不存在,300,而如果存在则不进行任何操作
EXPIRE key 300 NX

# 仅仅存在是设置失效时间,300s后失效
EXPIRE key 300 XX

### 更新过期时间
# GT(仅当过期时间大于当前过期时间时才设置过期时间)
EXPIRE key 300 GT      # 如果key 的过期时间是10s,此时设置的300s 大于过期已有的过期时间,会更新过期时间

# LT(仅当过期时间小于当前过期时间时才设置过期时间)
EXPIRE key 300 LT      # 如果当前 的过期时间是 600s 此时设置的过期时间300s 小于已经设置的过期时间,会更新过期时间,执行命令后,key 的过期时间为300s

其他操作

检查key 是否存在
EXISTS key             ##检查给定 key 是否存在。
##序列化给定 key
DUMP key               ##序列化给定 key ,并返回被序列化的值。

PEXPIRE key milliseconds ##设置 key 的过期时间亿以毫秒计

MOVE key db             ##将当前数据库的 key 移动到给定的数据库 db 当中

PERSIST key             ##移除 key 的过期时间,key 将持久保持。

set zhangbuda 188
OK
127.0.0.1:6379> expire zhangbuda 200      # 设置过期时间为 200s
(integer) 1
127.0.0.1:6379> pttl zhangbuda            # 显示还有多少时间过期,单位毫秒
(integer) 191951
127.0.0.1:6379> ttl zhangbuda             # 显示还有多少时间过期,单位秒
(integer) 180
127.0.0.1:6379> persist zhangbuda          # 永久有效
(integer) 1
127.0.0.1:6379> ttl zhangbuda
(integer) -1
127.0.0.1:6379> type zhangbuda            # 返回key 的类型
string
127.0.0.1:6379> get zhangbuda
"188"
127.0.0.1:6379>

哈希

注意 主键key 必须唯一,比如,string 的key 与 hash 的 key 不能重复

### hmset 、hgetall
hmset zhangbuda2 name "tt is a tt" description "he is a worker" age "24 26"
OK
127.0.0.1:6379> hget zhangbuda2
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hgetall  zhangbuda2
1) "name"
2) "tt is a tt"
3) "description"
4) "he is a worker"
5) "age"
6) "24 26"

hexists zhangbuda2 name
(integer) 1
127.0.0.1:6379> hexists zhangbuda2 age
(integer) 1
127.0.0.1:6379> hdel zhangbuda2 age
(integer) 1
127.0.0.1:6379> hgetall zhangbuda2
1) "name"
2) "tt is a tt"
3) "description"
4) "he is a worker"
127.0.0.1:6379> hkeys zhangbuda2
1) "name"
2) "description"
127.0.0.1:6379> hlen zhangbuda2
(integer) 2
127.0.0.1:6379> hset zhangbuda2 name "zhangbuda"
(integer) 0
127.0.0.1:6379> hgetall zhangbuda2
1) "name"
2) "zhangbuda"
3) "description"
4) "he is a worker"
127.0.0.1:6379> hvals zhangbuda2
1) "zhangbuda"
2) "he is a worker"
127.0.0.1:6379>

链表

# 分批次插入链表中    lpush 就是不断往头部插入  rpush 就是不断往尾部插入
27.0.0.1:6379> lpush zhangbuda1229 zhang
(integer) 1
127.0.0.1:6379> lpush zhangbuda1229 zhang2
(integer) 2
127.0.0.1:6379> lpush zhangbuda1229 zhang2
(integer) 3
127.0.0.1:6379> lpush zhangbuda1229 zhang3
(integer) 4
127.0.0.1:6379> lpush zhangbuda1229 zhang4

## 查看插入结果,后插入的排在前面  从0开始到n-1     如果要打印所有元素  lrange zhangbuda1229 0 -1
127.0.0.1:6379> lrange zhangbuda1229 0 10
1) "zhang4"
2) "zhang3"
3) "zhang2"
4) "zhang2"
5) "zhang"

## 删除首个元素
127.0.0.1:6379> blpop zhangbuda1229 1
1) "zhangbuda1229"
2) "zhang4"

## 删除末尾元素
brpop zhangbuda1229 1
1) "zhangbuda1229"
2) "zhang"

## 往尾部继续插入元素
RPUSH zhangbuda1229 zhanbuda1 zhanbuda2 zhanbuda3
## 再往 zhangbuda2 后面插入一个元素 zhangbuda5
LINSERT zhangbuda1229 AFTER zhanbuda2 zhangbuda5
127.0.0.1:6379> LRANGE zhangbuda1229 0 -1
1) "zhang3"
2) "zhang2"
3) "zhang2"
4) "zhanbuda1"
5) "zhanbuda2"
6) "zhangbuda5"
7) "zhanbuda3"
# 往 zhangbuda5 后面插入 zhangbuda6
linsert zhangbuda1229 after zhangbuda5 zhangbuda6

# 往zhangbuda5 前面插入 zhangbuda4
linsert zhangbuda1229 before zhangbuda5 zhangbuda4
LRANGE zhangbuda1229 0 -1
1) "zhang3"
2) "zhang2"
3) "zhang2"
4) "zhanbuda1"
5) "zhanbuda2"
6) "zhangbuda4"
7) "zhangbuda5"
8) "zhangbuda6"
9) "zhanbuda3"

集合

### 单个插入或者插入多个、插入重复的元素、查看插入后的所有元素、插入后的元素个数
127.0.0.1:6379> sadd zhangbuda1229_2 zhang1
(integer) 1
127.0.0.1:6379> sadd zhangbuda1229_2 zhang2
(integer) 1
127.0.0.1:6379> sadd zhangbuda1229_2 zhang3
(integer) 1
127.0.0.1:6379> sadd zhangbuda1229_2 zhang4
(integer) 1
127.0.0.1:6379> sadd zhangbuda1229_2 zhang5 zhang6
(integer) 2
127.0.0.1:6379> sadd zhangbuda1229_2 zhang1
(integer) 0
127.0.0.1:6379> smembers zhangbuda1229_2
1) "zhang4"
2) "zhang1"
3) "zhang5"
4) "zhang2"
5) "zhang6"
6) "zhang3"
127.0.0.1:6379> scard zhangbuda1229_2
(integer) 6

### 比较 另一个 set 不同的元素有哪些
sadd zhangbuda1229_3 zhang1 zhang2 zhangbuda1 zhangbuda2
(integer) 4
127.0.0.1:6379> sdiff zhangbuda1229_2 zhangbuda1229_3
1) "zhang5"
2) "zhang3"
3) "zhang6"
4) "zhang4"

### 把两个 set 中相同的元素 复制到 新的set 中
sinterstore zhangbuda1229_4 zhangbuda1229_2 zhangbuda1229_3
(integer) 2
127.0.0.1:6379> smembers zhangbuda1229_4
1) "zhang2"
2) "zhang1"

### 删除指定元素
127.0.0.1:6379> smembers zhangbuda1229_2
1) "zhang5"
2) "zhang2"
3) "zhang6"
4) "zhang3"
5) "zhang1"
6) "zhang4"
127.0.0.1:6379> srem zhangbuda1229_2 zhang5
(integer) 1
127.0.0.1:6379> smembers zhangbuda1229_2
1) "zhang2"
2) "zhang6"
3) "zhang3"
4) "zhang1"
5) "zhang4"

### 随机删除 x 个元素
127.0.0.1:6379> smembers zhangbuda1229_2
1) "zhang2"
2) "zhang6"
3) "zhang3"
4) "zhang1"
5) "zhang4"
127.0.0.1:6379> scard zhangbuda1229_2
(integer) 5
127.0.0.1:6379> spop zhangbuda1229_2 2
1) "zhang3"
2) "zhang1"
127.0.0.1:6379> smembers zhangbuda1229_2
1) "zhang2"
2) "zhang6"
3) "zhang4"

有序集合

### 有序集合的增删改查
127.0.0.1:6379> zadd zhangbdua1229_6 1 'zhang' 2 'zhang2' 3 'zhang3'        # 同时插入多个有序元素  有序 == 分数
(integer) 3
127.0.0.1:6379> zcard zhangbuda1229_6
(integer) 0
127.0.0.1:6379> zcard zhangbdua1229_6                                        #  查 zhangbdua1229_6 有多少个元素个数
(integer) 3
127.0.0.1:6379> zrem zhangbdua1229_6 zhang2                                  # 删除 指定元素
(integer) 1
127.0.0.1:6379> zincrby zhangbdua1229_6 5 zhang3                              # 改  修改该元素的 分数  其实就是 执行加法
"8"
127.0.0.1:6379> zrangebyscore zhangbdua1229_6 1 10                            # 查指定范围内(根据分数)的元素
1) "zhang"
2) "zhang3"
127.0.0.1:6379> zscore zhangdua1229_6 zhang3
(nil)
127.0.0.1:6379> zscore zhangbdua1229_6 zhang3
"8"
127.0.0.1:6379> zincrby zhangbdua1229_6 10 zhang3
"18"
127.0.0.1:6379> zscore zhangbdua1229_6 zhang3
"18"
127.0.0.1:6379> zrangebyscore zhangbdua1229_6 1 10
1) "zhang"
127.0.0.1:6379> zrangebyscore zhangbdua1229_6 1 20
1) "zhang"
2) "zhang3"
127.0.0.1:6379> zincrby zhangbdua1229_6 -5 zhang3
"13"
127.0.0.1:6379> zrangebyscore zhangbdua1229_6 1 20
1) "zhang"
2) "zhang3"

后续更新2024.12.29

#c/c++ #mysql #redis #数据库