redis数据类型的设置


通用类型

# 查看当前库下所有值
127.0.0.1:6381> keys *
1) "age"

# 判断keyname是否存在
127.0.0.1:6381> keys name
(empty array)
127.0.0.1:6381> keys age
1) "age"

# 给存在的key改名
rename key newkey
127.0.0.1:6381> keys *
1) "age"
2) "ages"
127.0.0.1:6381> rename age ageeeee
OK
127.0.0.1:6381> keys *
1) "ageeeee"
2) "ages"

# 查看key的数据类型
type key
127.0.0.1:6381> type ages
string

# 删除key
del key
127.0.0.1:6381> del ageeeee
(integer) 1
127.0.0.1:6381> keys *
1) "ages"

# 查看key的生存时间
ttl key
ttl ages
(integer) -1

# 以秒为单位设置时间
expire key seconds
127.0.0.1:6381> expire ages 10
(integer) 1
127.0.0.1:6381> ttl ages
(integer) 5
127.0.0.1:6381> ttl ages
(integer) -2
127.0.0.1:6381> keys *
(empty array)

# 以毫秒为单位设置时间
127.0.0.1:6381> pexpire age 10000
(integer) 1
127.0.0.1:6381> ttl age
(integer) 7
127.0.0.1:6381> ttl age
(integer) 1
127.0.0.1:6381> ttl age
(integer) -2
127.0.0.1:6381> keys *
(empty array)

# 取消生存时间
persist key
127.0.0.1:6381> persist age
(integer) 1


string字符串类型的操作

###-------- 增
# 如何设置string类型的key
set key value
127.0.0.1:6381> set name xxx
OK
# 同时设置多个值
127.0.0.1:6381> mset age 18 name xxx
OK
127.0.0.1:6381> keys *
1) "age"
2) "name"

# 设置key的同时设置生存时间
## 设置key并以秒为单位设置生存时间
set age 18 ex 10
OK

## 递归增加
127.0.0.1:6381> set fans 1
OK
# 收获新的粉丝 在原本粉丝的基础上做递增
127.0.0.1:6381> incr fans
(integer) 2
127.0.0.1:6381> incr fans
(integer) 3
127.0.0.1:6381> incr fans
(integer) 4
# 指定增加增长个数
127.0.0.1:6381> incrby fans 2
(integer) 12
127.0.0.1:6381> incrby fans 7
(integer) 19


# 递归减少 递减
127.0.0.1:6381> decr fans
(integer) 19
127.0.0.1:6381> decr fans
(integer) 18
127.0.0.1:6381> decr fans
(integer) 17
127.0.0.1:6381> decr fans
(integer) 16
# 指定减少次数
127.0.0.1:6381> decrby fans 3
(integer) 11
127.0.0.1:6381> decrby fans 2
(integer) 9

# 小数点增张
127.0.0.1:6381> incrbyfloat fans 0.1
"1.1"
127.0.0.1:6381> incrbyfloat fans 0.8
"1.9"
127.0.0.1:6381> incrbyfloat fans 0.1
"2"
# -------- 删
del keyname
127.0.0.1:6381> keys *
1) "age"
2) "fans"
3) "num"
4) "name"
5) "fan"
127.0.0.1:6381> del fans
(integer) 1
127.0.0.1:6381> keys *
1) "age"
2) "num"
3) "name"
4) "fan"
# ------- 改
# 追加 append
127.0.0.1:6381> get name
"xxx"
127.0.0.1:6381> append name 666
(integer) 6
127.0.0.1:6381> get name
"xxx666"
# 修改指定的位数额值 从0开始算
127.0.0.1:6381> setrange name 1 y
(integer) 6
127.0.0.1:6381> get name
"xyx666"
# ------- 查
# 获取key的值
127.0.0.1:6381> get name
"yyx666"
# 获取多个值
127.0.0.1:6381> mget name age
1) "yyx666"
2) "18"
# 查看值的字符长度
1) "yyx666"
2) "18"
127.0.0.1:6381> strlen name
(integer) 6
127.0.0.1:6381> strlen age
(integer) 2
# 查看以秒为单位存活时间
ttl age
(integer) -1
# 查看毫秒为单位的存活时间
127.0.0.1:6381> set haha xixi px 100000
OK
127.0.0.1:6381> pttl haha
(integer) 80911
# 字符串的截取
getrange key start end
127.0.0.1:6381> getrange name 0 3
"1234"


hash类型 字典形

# 存储部分变更的数据
用户信息 商品信息
最接近表结构的数据类型
# 大部分的缓存都会做hash类型

# 学生表
student表

# 设置key
hset key field value [field value ...]
hset student name 111
# 查看key
127.0.0.1:6381> hget student name
"111"
127.0.0.1:6381> hget student age
"20"

# 获取整个key的所有的字段
hgetall student_id_1
1) "name"
2) "l"
3) "age"
4) "18"


# ----- 增
# 创建key
hset key field value [field value ...]
# 创建多个
hset student)id_2 name o age 20

# ----- 查
# 查询某一个字段
hget key field
hget student name
"111"
# 查询key中所有的字段
hgetall
hgetall student
1) "name"
2) "111"
3) "age"
4) "20"
# 查询key中特定字段
hmget student_id_3 name gender
1) "xiaoming"
2) "male"

list(列表)

# -------------------- 增 ---------------------#

#将一个值或者多个值插入列表的表头(若key不存在,则添加key并依次添加)
127.0.0.1:6379> lpush list zls
(integer) 1
127.0.0.1:6379> lpush list bgx
(integer) 2
127.0.0.1:6379> lpush list oldboy
(integer) 3
127.0.0.1:6379> lpush list alex
(integer) 4
#一行添加
127.0.0.1:6379> lpush teacher zls bgx oldboy alex
(integer) 4
#追加一个value值,若key不存在,则不创建
127.0.0.1:6379> LPUSHX teacher1 zls
(integer) 0
#在bgx前面添加zls
127.0.0.1:6379> linsert teacher before bgx zls
(integer) 6
#在尾部添加key
127.0.0.1:6379> rpush teacher wang5
(integer) 7
#将teacher的尾部元素弹出,再插入到teacher1的头部
127.0.0.1:6379> rpoplpush teacher teacher1
"wang5"
#查看一个列表内有多少行
127.0.0.1:6379> llen list
(integer) 4
# ------------------------删------------------#

#删除key
127.0.0.1:6379> del teacher
(integer) 1
#从头部开始找,按先后顺序,值为a的元素,删除数量为2个,若存在第3个,则不删除
127.0.0.1:6379> lrem teacher 2 zls
(integer) 2
#从头开始,索引为0,1,2的3个元素,其余全部删除改
127.0.0.1:6379> ltrim teacher 0 2
OK
# -------------------------改 --------------------- #

#从头开始, 将索引为1的元素值,设置为新值 e,若索引越界,则返回错误信息
127.0.0.1:6379> lset teacher 1 test
OK
#将 teacher 中的尾部元素移到其头部
127.0.0.1:6379> rpoplpush teacher teacher
"oldboy"
# 修改指定位置的值
127.0.0.1:6379> lrange name 0 -1
1) "99"
2) "88"
127.0.0.1:6379> lset name 0 00
OK
127.0.0.1:6379> lrange name 0 -1
1) "00"
2) "88"
# ----------------------- 查 ---------------------#

#列表头部弹出,弹一行少一行
127.0.0.1:6379> lpop teacher
"zls"
#列表尾部
127.0.0.1:6379> rpop teacher
"wang5"
#查询索引(头部开始)
127.0.0.1:6379> lindex list 0
"bgx"
#查询索引(尾部第一个)
127.0.0.1:6379> lindex list -1
"alex"
#范围查询索引
127.0.0.1:6379> lrange list 0 1
1) "bgx"
2) "oldboy"


set 集合

# ----------------- 增 ------------------------ #
	
#若key不存在,创建该键及与其关联的set,依次插入bgx、lidao、xiaomimei若key存在,则插入value中,若bgx在zls_fans中已经存在,则插入了lidao和xiaomimei两个新成员。
127.0.0.1:6379> sadd zls_fans bgx lidao xiaomimei
(integer) 3
# -----------------删---------------------- #

#尾部的b被移出,事实上b并不是之前插入的第一个或最后一个成员
127.0.0.1:6379> spop zls_fans
"bgx"
#若值不存在, 移出存在的值,并返回剩余值得数量
127.0.0.1:6379> SREM zls_fans lidao oldboy alex
(integer) 1
# -----------------改------------------ #
	
#将小迷妹从 zls_fans 移到 bgx_fans
127.0.0.1:6379> SMOVE zls_fans bgx_fans xiaomimei
(integer) 1
# -------------- 查----------------- #

#判断xiaomimei是否已经存在,返回值为 1 表示存在
127.0.0.1:6379> SISMEMBER zls_fans xiaomimei
(integer) 0
127.0.0.1:6379> SISMEMBER bgx_fans xiaomimei
(integer) 1
#查看set中的内容
127.0.0.1:6379> SMEMBERS zls_fans
1) "xiaomimei"
2) "bgx"
3) "lidao"
#获取Set 集合中元素的数量
127.0.0.1:6379> scard zls_fans
(integer) 0
127.0.0.1:6379> scard bgx_fans
(integer) 1
#随机的返回某一成员
127.0.0.1:6379> srandmember bgx_fans
"xiaomimei"
### --------- 并  交  差 ------------- ###
	
#创建三个集合
127.0.0.1:6379> sadd zls_fans bgx lidao xiaomimei
(integer) 3
127.0.0.1:6379> sadd bgx_fans zls lidao xiaomimei
(integer) 2
127.0.0.1:6379> sadd lidao_fans 0
(integer) 1
 
#1和2得到一个结果,拿这个集合和3比较,获得每个独有的值(以1为主 1有2没有的)
127.0.0.1:6379> sdiff zls_fans bgx_fans lidao_fans
1) "bgx"
#3个集和比较,获取独有的元素,并存入diffkey 关联的Set中
127.0.0.1:6379> sdiffstore diffkey zls_fans bgx_fans lidao_fans
(integer) 1
#获得3个集合中都有的元素
127.0.0.1:6379> sinter zls_fans bgx_fans lidao_fans
(empty list or set)    //因为这里没有交集,所以返回一个空集合
#把交集存入interkey 关联的Set中
127.0.0.1:6379> sinterstore interkey bgx_fans lidao_fans
(integer) 0  // 因为这里没有交集,所以存入的值为0
#获取3个集合中的成员的并集
127.0.0.1:6379> sunion zls_fans bgx_fans lidao_fans
1) "bgx"
2) "xiaomimei"
3) "zls"
4) "lidao"
5) "0"
#把并集存入unionkey 关联的Set中
127.0.0.1:6379> sunionstore unionkey zls_fans bgx_fans lidao_fans
(integer) 5


sorted set

# ------------- 增 -------------- #
	
#添加两个分数分别是 2 和 3 的两个成员
127.0.0.1:6379> zadd myzset 2 "two" 3 "three"
(integer) 2
# ------------ 删 ------------- #
	
#删除多个成员变量,返回删除的数量
127.0.0.1:6379> zrem myzset one two
(integer) 1
# ------------ 改 ------------ #
	
#将成员 one 的分数增加 2,并返回该成员更新后的分数
127.0.0.1:6379> zincrby myzset 2 one
"2"
# -------- 查 --------- #
#返回所有成员和分数,不加WITHSCORES,只返回成员
127.0.0.1:6379> zrange myzset 0 -1 WITHSCORES
1) "one"
2) "2"
3) "three"
4) "3"
#获取成员one在Sorted-Set中的位置索引值。0表示第一个位置
127.0.0.1:6379> zrank myzset one
(integer) 0
#获取 myzset 键中成员的数量
127.0.0.1:6379> zcard myzset
(integer) 2
#获取分数满足表达式 1 <= score <= 2 的成员的数量
127.0.0.1:6379> zcount myzset 1 2
(integer) 1  
#获取成员 three 的分数 
127.0.0.1:6379> zscore myzset three
"3"
#获取分数满足表达式 1 < score <= 2 的成员
127.0.0.1:6379> zrangebyscore myzset  1 2
1) "one"
#-inf 表示第一个成员,+inf最后一个成员
#limit限制关键字
#2  3  是索引号
zrangebyscore myzset -inf +inf limit 2 3  返回索引是2和3的成员
#删除分数 1<= score <= 2 的成员,并返回实际删除的数量
127.0.0.1:6379> zremrangebyscore myzset 1 2
(integer) 1
#删除位置索引满足表达式 0 <= rank <= 1 的成员
127.0.0.1:6379> zremrangebyrank myzset 0 1
(integer) 1
#按位置索引从高到低,获取所有成员和分数
127.0.0.1:6379> zrevrange myzset 0 -1 WITHSCORES
#原始成员:位置索引从小到大
      one  0
      two  1
#执行顺序:把索引反转
      位置索引:从大到小
      one 1
      two 0  
#输出结果: 
       two
       one
#获取位置索引,为1,2,3的成员
127.0.0.1:6379> zrevrange myzset 1 3
(empty list or set)
#相反的顺序:从高到低的顺序
#获取分数 3>=score>=0的成员并以相反的顺序输出
127.0.0.1:6379> zrevrangebyscore myzset 3 0
(empty list or set)
#获取索引是1和2的成员,并反转位置索引
127.0.0.1:6379> zrevrangebyscore myzset 4 0 limit 1 2
(empty list or set)