類型
|
描述
|
string
|
字符串
|
list
|
列表
|
hash
|
字典
|
set
|
集合
|
zset
|
有序集合
|
命令
|
描述
|
set
|
新增值
|
get
|
獲取值
|
del
|
刪除值
|
mset
|
批量新增
|
mget
|
返回列表
|
incr
|
自增 1
|
incrby
|
增加指定數值
|
# 設置value
127.0.0.1:6379> set iphone-name ranen
OK
127.0.0.1:6379> set iphone2-name echo
OK
# 返回列表
127.0.0.1:6379> mget iphone-name iphone2-name
1) "ranen"
2) "echo"
# 批量設置
127.0.0.1:6379> mset ranen-name wangp echo-name qiujy
OK
# 返回列表
127.0.0.1:6379> mget ranen-name echo-name
1) "wangp"
2) "qiujy"
# 刪除
127.0.0.1:6379> del ranen-name
(integer) 1
127.0.0.1:6379> mget ranen-name echo-name
1) (nil)
2) "qiujy"
# value 爲 int 類型可以實現自增功能,通常自增範圍在 signed long 的 [min,max] 之間
127.0.0.1:6379> set ranen-age 26
OK
127.0.0.1:6379> get ranen-age
"26"
# 自增 1
127.0.0.1:6379> incr ranen-age
(integer) 27
127.0.0.1:6379> get ranen-age
"27"
# 增加 10
127.0.0.1:6379> incrby ranen-age 10
(integer) 37
127.0.0.1:6379> get ranen-age
"37"
# 減 10
127.0.0.1:6379> incrby ranen-age -10
(integer) 27
127.0.0.1:6379> get ranen-age
"27"
-
緩存用戶信息,將用戶數據、權限數據、tocken轉爲json字符串,然後存儲在redis。
-
生成token存放在redis。
命令
|
描述
|
rpush
|
右側添加值
|
rpop
|
右側彈出值
|
lpush
|
左側添加值
|
lpop
|
左側彈出值
|
llen
|
獲取列表長度
|
# 隊列:右進 左出
127.0.0.1:6379> rpush channel msg1 msg2 msg3 msg4
(integer) 4
127.0.0.1:6379> llen channel
(integer) 4
127.0.0.1:6379> lpop channel
"msg1"
127.0.0.1:6379> llen channel
(integer) 3
127.0.0.1:6379> lpop channel
"msg2"
127.0.0.1:6379> lpop channel
"msg3"
127.0.0.1:6379> lpop channel
"msg4"
127.0.0.1:6379> lpop channel
(nil)
# 棧:右進 右出
127.0.0.1:6379> rpush stack value1 value2 value3 value4
(integer) 4
127.0.0.1:6379> llen stack
(integer) 4
127.0.0.1:6379> rpop stack
"value4"
127.0.0.1:6379> rpop stack
"value3"
127.0.0.1:6379> rpop stack
"value2"
127.0.0.1:6379> rpop stack
"value1"
127.0.0.1:6379> rpop stack
(nil)
127.0.0.1:6379> rpush list value1 value2 value3 value4
(integer) 4
# 獲取所有數據
127.0.0.1:6379> lrange list 0 -1
1) "value1"
2) "value2"
3) "value3"
4) “value4”
# 獲取索引爲 0 的數據
127.0.0.1:6379> lindex list 0
"value1"
127.0.0.1:6379> lindex list 1
“value2"
# 截取(保留)list 從索引1 到索引倒數第 1 個
127.0.0.1:6379> ltrim list 1 -1
OK
127.0.0.1:6379> lrange list 0 -1
1) "value2"
2) "value3"
3) “value4"
# 截取索引 1 到 索引 0 的數據,小於 0 則爲清空列表
127.0.0.1:6379> ltrim list 1 0
OK
127.0.0.1:6379> lrange list 0 -1
(empty list or set)
127.0.0.1:6379> llen list
(integer) 0
-
異步隊列,無ack機制的消息推送。
-
生產消費模型。
命令
|
描述
|
hset
|
添加值
|
hgetall
|
獲取所有值,key、value依次列出
|
hlen
|
記錄行數
|
hget
|
獲取記錄值
|
hmset
|
批量設置
|
hmget
|
批量獲取
|
# 設置hash 數據 people的name 爲 wangp
127.0.0.1:6379> hset people name wangp
(integer) 1
127.0.0.1:6379> hset people age 26
(integer) 1
127.0.0.1:6379> hset people sex 男
(integer) 1
# 獲取hash全量數據,key和value間隔打印
127.0.0.1:6379> hgetall people
1) "name"
2) "wangp"
3) "age"
4) "26"
5) "sex"
6) "\xe7\x94\xb7"
127.0.0.1:6379> hlen people
(integer) 3
# 更新年齡
127.0.0.1:6379> hset people age 27
(integer) 0 # 更新成功
127.0.0.1:6379> hgetall people
1) "name"
2) "wangp"
3) "age"
4) "27"
5) "sex"
6) "\xe7\x94\xb7”
# 批量獲取屬性列表
127.0.0.1:6379> hmget people name age sex
1) "wangp"
2) "27"
3) "\xe7\x94\xb7”
# 批量設置hash 屬性
127.0.0.1:6379> hmset people email [email protected] address 浙江杭州蕭山區
OK
127.0.0.1:6379> hgetall people
1) "name"
2) "wangp"
3) "age"
4) "27"
5) "sex"
6) "\xe7\x94\xb7"
7) "email"
8) "[email protected]"
9) "address"
10) "\xe6\xb5\x99\xe6\xb1\x9f\xe6\x9d\xad\xe5\xb7\x9e\xe8\x90\xa7\xe5\xb1\xb1\xe5\x8c\xba”
# hash針對整形屬性同樣支持 自增
127.0.0.1:6379> hincrby people age 1
(integer) 28
-
存儲用戶數據,與string不同,可以按屬性存儲、提取數據,而非像string一樣全部取出,序列化重新存入。在網絡環境中可以節省不小的流量開支。
# set中添加一個值
127.0.0.1:6379> sadd car BMW
(integer) 1
# 重複添加,添加失敗
127.0.0.1:6379> sadd car BMW
(integer) 0
# 添加小寫,證明大小寫敏感
127.0.0.1:6379> sadd car bmw
(integer) 1
# 批量添加 直接空格分隔
127.0.0.1:6379> sadd car audi benz MAYBACH
(integer) 3
# 顯示所有值列表
127.0.0.1:6379> smembers car
1) "bmw"
2) "audi"
3) "benz"
4) "BMW"
5) “MAYBACH"
# 判斷一個值是否存在
127.0.0.1:6379> sismember car bmw
(integer) 1
127.0.0.1:6379> sismember car shuangzuan
(integer) 0
# 從car 中彈出一個值
127.0.0.1:6379> spop car
"benz"
127.0.0.1:6379> spop car
"MAYBACH"
127.0.0.1:6379> smembers car
1) "bmw"
2) "audi"
3) "BMW"
-
利用Set的唯一性可實現對業務主鍵去重處理。
# 以下爲關注列表示例
# 20200101 wangsicong關注了我
127.0.0.1:6379> zadd myfollower 20200101 [email protected]
(integer) 1
127.0.0.1:6379> zadd myfollower 20200102 [email protected]
(integer) 1
127.0.0.1:6379> zadd myfollower 20190102 [email protected]
(integer) 1
127.0.0.1:6379> zadd myfollower 20161202 [email protected]
(integer) 1
127.0.0.1:6379> zadd myfollower 20211202 [email protected]
(integer) 1
# 顯示全部關注列表
127.0.0.1:6379> zrange myfollower 0 -1
1) "[email protected]"
2) "[email protected]"
3) "[email protected]"
4) "[email protected]"
5) "[email protected]”
# 逆序打印
127.0.0.1:6379> zrevrange myfollower 0 -1
1) "[email protected]"
2) "[email protected]"
3) "[email protected]"
4) "[email protected]"
5) "[email protected]”
# 統計共有多少數據
127.0.0.1:6379> zcard myfollower
(integer) 5
# 獲取 [email protected] 的 關注時間
127.0.0.1:6379> zscore myfollower [email protected]
“20211202"
# 獲取 [email protected] 的排序
127.0.0.1:6379> zrank myfollower [email protected]
(integer) 4
# 找到19990101到20201230之間關注的人的ID
127.0.0.1:6379> zrangebyscore myfollower 19990101 20201230
1) "[email protected]"
2) "[email protected]"
3) "[email protected]"
4) "[email protected]”
# 找到 負無窮到 20201230 之間的關注者,也就是 20201230之前關注我的人
127.0.0.1:6379> zrangebyscore myfollower -inf 20201230
1) "[email protected]"
2) "[email protected]"
3) "[email protected]"
4) "[email protected]”
# 趙本山老師取消了關注我
127.0.0.1:6379> zrem myfollower [email protected]
(integer) 1
127.0.0.1:6379> zrangebyscore myfollower -inf 20201230
1) "[email protected]"
2) "[email protected]"
3) "[email protected]"
127.0.0.1:6379> zrange myfollower 0 -1
1) "[email protected]"
2) "[email protected]"
3) "[email protected]"
4) "[email protected]"
-
學生按成績排序,其中value就是學生名字,score便是學生的分數。
-
微博關注列表,value爲微博id,score爲微博的關注時間。
# 新建一個計時器
127.0.0.1:6379> set timer ranen
OK
# 計時器 500s 過期
127.0.0.1:6379> expire timer 500
(integer) 1
# 查看剩餘長時間過期
127.0.0.1:6379> ttl timer
(integer) 494
# 覆蓋新的timer
127.0.0.1:6379> set timer ranen
OK
# 原有超期時間自動作廢
127.0.0.1:6379> ttl timer
(integer) -1
# 設置500s超期,如果timer不存在則創建
127.0.0.1:6379> set timer ranen ex 500 nx
(nil)
127.0.0.1:6379> ttl timer
(integer) -1
# 設置500s超期,如果timer1不存在則創建
127.0.0.1:6379> set timer1 ranen ex 500 nx
OK
# 未被覆蓋
127.0.0.1:6379> ttl timer
(integer) -1
# 500s計時器創建成功
127.0.0.1:6379> ttl timer1
(integer) 451