首页技术栈归档照片墙音乐日记随想收藏夹友链留言关于

五大基本数据类型

写作时间:2026-07-08

五大基本数据类型

Redis-Key

在redis中无论什么数据类型,在数据库中都是以key-value形式保存,通过进行对Redis-key的操作,来完成对数据库中数据的操作。

  • exists key:判断键是否存在
  • del key:删除键值对
  • move key db:将键值对移动到指定数据库
  • expire key second:设置键值对的过期时间
  • type key:查看value的数据类型
  • 看帮助文档: help @string @list @set @hash @zset
127. 0.0.1:6379> set name yuan # set key
OK
127. 0.0.1:6379> set age 18
OK
127. 0.0.1:6379> keys *  # 查看当前数据库所有key
1) "age"
2) "name"
127. 0.0.1:6379> move age 1   # 将键值对移动到指定数据库
(integer) 1
127. 0.0.1:6379> select 1
OK
127. 0.0.1:6379[1]> get age
"18"
127. 0.0.1:6379[1]> del age  #删除键为age的值
(integer) 1  
127. 0.0.1:6379[1]> exists age   #判断age是否存在  
(integer) 0  #不存在
127. 0.0.1:6379> set age 10
OK
127. 0.0.1:6379> expire age 10 # 设置键值对的过期时间
(integer) 1
127. 0.0.1:6379> ttl age   # 查看key的过期剩余时间
(integer) 6 
127. 0.0.1:6379> ttl age
(integer) 2
127. 0.0.1:6379> ttl age
(integer) -2   # -2 表示key过期
127. 0.0.1:6379> get age  # 过期的key 会被自动delete
(nil)
127. 0.0.1:6379> type name  #查看value的类型
string
#####################################################
127. 0.0.1:6381> set key name
OK
#设置key的过期时间为10秒
127. 0.0.1:6381> expire key 10
(integer) 1
#查看还剩多少秒过期
127. 0.0.1:6381> ttl key
(integer) 5

Redis的key,通过TTL命令返回key的过期时间,一般来说有3种:

  1. 当前key没有设置过期时间,所以会返回-1.
  2. 当前key有设置过期时间,而且key已经过期,所以会返回-2.
  3. 当前key有设置过期时间,且key还没有过期,故会返回key的正常剩余时间.

关于重命名RENAME和RENAMENX

  • RENAME key newkey修改 key 的名称
  • RENAMENX key newkey仅当 newkey 不存在时,将 key 改名为 newkey 。

String(字符串)

127. 0.0.1:6379> set key1 yuan1  #存储一个key
OK
127. 0.0.1:6379> get key1  #查看key
"yuan1"
127. 0.0.1:6379> exists key1  #判断key是否存在
(integer) 1
127. 0.0.1:6379> append key1 hello   #向指定的key的value后追加字符串
(integer) 10
127. 0.0.1:6379> get key1
"yuan1hello"
127. 0.0.1:6379> strlen key1 #获取字符串的长度
(integer) 10
127. 0.0.1:6379> 
##############################################################################################
i++ 自增
127. 0.0.1:6379> set views 0  #初始值为0
OK
127. 0.0.1:6379> get views
"0"
127. 0.0.1:6379> incr views  #自增,值+1
(integer) 1
127. 0.0.1:6379> incr views  #自增+1
(integer) 2
 127. 0.0.1:6379> decr views   #自减-1
(integer) 1
127. 0.0.1:6379> decr views   #自减-1
(integer) 0
127. 0.0.1:6379> get views
"0"
127. 0.0.1:6379> incrby views 10  设置步长指定增量,这里指定的增量为10
(integer) 10
127. 0.0.1:6379> get views
"10"
127. 0.0.1:6379> decrby views 5 设置步长指定减量,这里指定的增量为5
(integer) 5
127. 0.0.1:6379> get views
"5"
127. 0.0.1:6379> 
##############################################################################################
#字符串范围 range
127. 0.0.1:6379> get key1
"yuan1hello"
127. 0.0.1:6379> getrange key1 0 3   #截取字符串[0,3]
"yuan"
127. 0.0.1:6379> getrange key1 0 -1 #获得全部字符串和get key是一样的
"yuan1hello"
 #替换   
127. 0.0.1:6379> setrange key1 1 **  #替换指定为开始位置的字符串!
(integer) 10
127. 0.0.1:6379> get key1
"y**n1hello"
##################################################################################################
# setex (set with expire)   #设置过期时间
# setnx (set if not exist)  #不存在在设置(在分布式中常常使用)

127. 0.0.1:6379> setex key2 30 "helo"  #设置key2的值为hello ,30秒后过期
OK
127. 0.0.1:6379> ttl key2
(integer) 24
127. 0.0.1:6379> setnx mykey "redis"  #如果mykey不存在,创建mykey
(integer) 1
127. 0.0.1:6379> keys *
1) "mykey"
2) "key1"
3) "views"
4) "viesw"
127. 0.0.1:6379> ttl key2
(integer) -2
127. 0.0.1:6379> setnx mykey "MongoDB"  #如果mykey存在,创建失败!
(integer) 0
127. 0.0.1:6379> get mykey
"redis"
127. 0.0.1:6379> 
##################################################################################################
mset  #同时设置多个值
mget  #同时获取多个值
127. 0.0.1:6379> mset k1 v1 k2 v2 k3 v3  #同时设置多个值
OK
127. 0.0.1:6379> keys *
1) "k2"
2) "k3"
3) "k1"
127. 0.0.1:6379> mget k1 k2 k3  #同时获取多个值
1) "v1"
2) "v2"
3) "v3"
127. 0.0.1:6379> msetnx k1 v1 k4 v4  #msetnx要么一起成功,要么一起失败
(integer) 0
127. 0.0.1:6379> get k4
(nil)
127. 0.0.1:6379> 

#对象
set user:1{name:zhangsan,age:10} #设置一个user:1对象,值为json来保存一个对象! 

#这里的key是一个巧妙的设计: user:{id}:{filed} ,如此设计在Redis中是完全OK了!    
127. 0.0.1:6379> mset user:1:name zhangsan user:1:age 2
OK
127. 0.0.1:6379> mget user:1:name user:1:age 
1) "zhangsan"
2) "2"
127. 0.0.1:6379> 
#######################################################################################
getset #先get然后在set
127. 0.0.1:6379> getset db redis  #如果不存在值,返回nil
(nil)
127. 0.0.1:6379> get db
"redis"
127. 0.0.1:6379> getset db mongodb  #如果存在值,获取原来的值,并设置新的值
"redis"
127. 0.0.1:6379> get db
"mongodb"
127. 0.0.1:6379> 

List(列表)

127. 0.0.1:6379> lpush list one  #将一个值或多个值,插入打列表头部(左)
(integer) 1
127. 0.0.1:6379> lpush list two
(integer) 2
127. 0.0.1:6379> lpush list three
(integer) 3
127. 0.0.1:6379> lrange list 0 -1  #获取列表的所有数据
1) "three"
2) "two"
3) "one"
127. 0.0.1:6379> lrange list 0 1    #通过区间获取,获取列表的数据倒着来的,最后一个为0
1) "three"
2) "two"
127. 0.0.1:6379> rpush list righr #讲一个值,或多个值,插入到列表左边(底)
(integer) 4
127. 0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "righr"
127. 0.0.1:6379> 
###############################################################################################
lpop #左删除
rpop #右删除
127. 0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "righr"
127. 0.0.1:6379> lpop list  #移除list的第一个元素
"three" 
127. 0.0.1:6379> rpop list   #移除list的最后一个元素
"righr"
127. 0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
127. 0.0.1:6379> 
###############################################################################################
lindex  通过下标获取元素
127. 0.0.1:6379> lindex list 1  #通过list获取某一项值
"one"
127. 0.0.1:6379> lindex list 0
"two"
127. 0.0.1:6379> 
###############################################################################################
llen  #获取list的长度

127. 0.0.1:6379> lpush one
(error) ERR wrong number of arguments for 'lpush' command
127. 0.0.1:6379> lpush list  one
(integer) 1
127. 0.0.1:6379> lpush list  two
(integer) 2
127. 0.0.1:6379> lpush list  three
(integer) 3
127. 0.0.1:6379> llen list  #获取列表的长度
(integer) 3
127. 0.0.1:6379> 
###############################################################################################
lrem #移除指定的值
127. 0.0.1:6379> lrange list 0 -1
1) "three"
2) "three"
3) "one"
4) "two"
127. 0.0.1:6379> lrem list 1 one   #移除元素为one的值   1代表个数
(integer) 1
127. 0.0.1:6379> lrange list 0 -1
1) "three"
2) "three"
3) "two"
127. 0.0.1:6379> lrem list 2 three   #移除2个元素为three的值   2代表个数
(integer) 2
127. 0.0.1:6379> lrange list 0 -1
1) "two"
127. 0.0.1:6379> 
###############################################################################################
trim 截取
127. 0.0.1:6379> rpush list "list1"
(integer) 1
127. 0.0.1:6379> rpush list "list2"
(integer) 2
127. 0.0.1:6379> rpush list "list3"
(integer) 3
127. 0.0.1:6379> rpush list "list4"
(integer) 4
127. 0.0.1:6379> ltrim list 1 2   # 通过下标截取指定的长度,这个list已经被改变了,截断了只剩下截取的元素!
OK
127. 0.0.1:6379> lrange list 0 -1
1) "list2"
2) "list3"
127. 0.0.1:6379> 
###############################################################################################
rpoplpush #移除列表最后一个元素,将他移动导新的列表中
127. 0.0.1:6379> flushdb
OK
127. 0.0.1:6379> rpush list lis1
(integer) 1
127. 0.0.1:6379> rpush list lis2
(integer) 2
127. 0.0.1:6379> rpush list lis3
(integer) 3
127. 0.0.1:6379> rpoplpush list list2  #移除列表的最后一个元素,将他们移动到新的列表中!
"lis3"
127. 0.0.1:6379> lrange list 0 -1  #查看原来的列表
1) "lis1"
2) "lis2"
127. 0.0.1:6379> lrange list2 0 -1 #查看新的列表,存在改变的值
1) "lis3"
127. 0.0.1:6379> 
###############################################################################################
lset  #将指定列表中的下标的值替换为另外一个值,更新操作
127. 0.0.1:6379> EXISTS  list  #判断列表是否存在
(integer) 0
127. 0.0.1:6379> set list 0 itme   #如果不存在,则创建失败
(error) ERR syntax error
127. 0.0.1:6379>  lpush list value1   
(integer) 1
127. 0.0.1:6379> lrange list 0 -1
1) "value1"
127. 0.0.1:6379> lset list 0  itme   #如果存在则更新下标的值
OK
127. 0.0.1:6379> lrange list 0 -1
1) "itme"
127. 0.0.1:6379> lset list 1 aa   #如果不存在,则会报错
(error) ERR index out of range
127. 0.0.1:6379> 
###############################################################################################
Linsert  #将某个值插入到某个元素的前面或者后面
127. 0.0.1:6379> FLUSHDB
OK
127. 0.0.1:6379> rpush list hello
(integer) 1
127. 0.0.1:6379> rpush list redis
(integer) 2
127. 0.0.1:6379> linsert list before redis  "**"  #在redis的前面插入入**值
(integer) 3
127. 0.0.1:6379> linsert list after  redis  "qian"  #在redis的后面插入qian值
(integer) 4
127. 0.0.1:6379> lrange list 0 -1
1) "hello"
2) "**"
3) "redis"
4) "qian"
127. 0.0.1:6379> 
#存储一段josn数据
lpush studentkey {id:1001,name:zhangsan,age:30} {id:1002,name:lisi,age:18}
#修改年龄为索引一的age为20
127. 0.0.1:6381> lset studentkey 1 {id:1002,name:lisi,age:20}
#获取索引为1的值
127. 0.0.1:6381> LRANGE studentkey 1 1
1) "{id:1002,name:lisi,age:20}"

小结

·他实际上是一个链表,before Node after , left , right 都可以插入值

·如果key不存在,创建新的链表

·如果key存在,新增内容

·如果移除了所有值,空链表,也代表不存在!

·在两边插入或者改动值,效率最高!中间元素,相对来说效率会低一点~

消息排队!消息队列( Lpush Rpop ) ,栈(Lpush Lpop )

Set(集合)

127. 0.0.1:6379> sadd myset "hello"   #给set集合添加元素  sadd key1 a b c d 添加多个值为 a b c d
(integer) 1
127. 0.0.1:6379> sadd myset "set"
(integer) 1
127. 0.0.1:6379> sadd myset "***"
(integer) 1
127. 0.0.1:6379> SMEMBERS myset  #查看set的值
1) "***"
2) "hello"
3) "set"
127. 0.0.1:6379> SISMEMBER myset hello  #判断元素是否存在set集合中
(integer) 1
127. 0.0.1:6379> SISMEMBER myset hell
(integer) 0
127. 0.0.1:6379> 
###############################################################################################
127. 0.0.1:6379> scard myset  #获取set集合内容元素的个数
(integer) 3
127. 0.0.1:6379> 
###############################################################################################
127. 0.0.1:6379> srem myset hello  #移除set中的指定元素
(integer) 1
127. 0.0.1:6379> scard myset    #获取set集合内容元素的个数
(integer) 2
127. 0.0.1:6379> smembers myset  #查看set的值
1) "***"
2) "set"
127. 0.0.1:6379> 
###############################################################################################
srandmember #随机抽取set集合中的元素
127. 0.0.1:6379> smembers myset
1) "***"
2) "set"
127. 0.0.1:6379> srandmember myset  #随机抽取set集合中的元素
"***"
127. 0.0.1:6379> srandmember myset  #随机抽取set集合中的元素
"set"
127. 0.0.1:6379> srandmember myset  #随机抽取set集合中的元素
"set"
127. 0.0.1:6379> srandmember myset  #随机抽取set集合中的元素
"set"
127. 0.0.1:6379> 
###############################################################################################
随机删除key 
127. 0.0.1:6379> SMEMBERS myset
1) "***"
2) "yuan"
3) "set"
127. 0.0.1:6379> spop myset   #随机删除set集合中的元素
"***"
127. 0.0.1:6379> spop myset 
"set"
127. 0.0.1:6379> SMEMBERS myset
1) "yuan"
127. 0.0.1:6379> 
###############################################################################################
#将指定的值移动到另一个set集合
127. 0.0.1:6379> FLUSHDB
OK
127. 0.0.1:6379> sadd myset hello
(integer) 1
127. 0.0.1:6379> sadd myset redis
(integer) 1
127. 0.0.1:6379> sadd myset yuan
(integer) 1
127. 0.0.1:6379> sadd myset2 ***
(integer) 1
127. 0.0.1:6379> smove myset myset2 yuan  #将myset集合的yuan元素移动搭配myset2中
(integer) 1
127. 0.0.1:6379> SMEMBERS myset
1) "redis"
2) "hello"
127. 0.0.1:6379> SMEMBERS myset2
1) "***"
2) "yuan"
127. 0.0.1:6379> 
###############################################################################################
数组集合类
-差集
-交集
-并集
127. 0.0.1:6379> FLUSHDB
OK
127. 0.0.1:6379> sadd key1 a
(integer) 1
127. 0.0.1:6379> sadd key1 b
(integer) 1
127. 0.0.1:6379> sadd key1 c
(integer) 1
127. 0.0.1:6379> sadd key2 c
(integer) 1
127. 0.0.1:6379> sadd key2 d
(integer) 1
127. 0.0.1:6379> sadd key2 e
(integer) 1
127. 0.0.1:6379> sdiff key1 key2  #差集  key1 和key2 比较,key1有哪些值在key2没有
1) "a"
2) "b"
127. 0.0.1:6379> sinter key1 key2 #交集  共同存在的
1) "c"
127. 0.0.1:6379> sunion key1 key2 #并集双方加起来的值,重复的不算
1) "a"
2) "b"
3) "c"
4) "e"
5) "d"
127. 0.0.1:6379> 

Hash(哈希)

Map集合,key-map!时候这个值是一个map集合!本质和String类型没有太大区别,还是一个简单的 key-vlaue !

127. 0.0.1:6379> FLUSHDB
OK
127. 0.0.1:6379> hset myhash fidld1 yuan  #set一个具体的key-vlaus
(integer) 1
127. 0.0.1:6379> hget myhash fidld1   #获取一个字段值
"yuan"
127. 0.0.1:6379> hmset myhash fidld1 hello fidld2 world   #同时set多个key-vlaue
OK
127. 0.0.1:6379> hmget myhash fidld1 fidld2    #同时获取多个值
1) "hello"
2) "world"
127. 0.0.1:6379> hgetall myhash  #获取所有的值
1) "fidld1"
2) "hello"
3) "fidld2"
4) "world"
127. 0.0.1:6379> hdel myhash fidld1  #删除hash指定key字段!对应的value值也就消失了!
(integer) 1
127. 0.0.1:6379> hgetall myhash
1) "fidld2"
2) "world"
127. 0.0.1:6379> 
###############################################################################################
#hlen 获取hash的长度     
127. 0.0.1:6379> hset myhash fidld1 yuan
(integer) 1
127. 0.0.1:6379> hlen myhash  #获取hash的长度
(integer) 2
127. 0.0.1:6379> hgetall myhash
1) "fidld2"
2) "world"
3) "fidld1"
4) "yuan"
127. 0.0.1:6379> 
################################################################################################
#hexists 判断指定的hash是否存在    
127. 0.0.1:6379> hexists myhash fidld1  #判断hash是否存在
(integer) 1
127. 0.0.1:6379> hexists myhash fidld7
(integer) 0
127. 0.0.1:6379> 
#hkeys 获取所有的key
#hvals 获取所有的values
127. 0.0.1:6379> hkeys myhash  #获取所有的key
1) "fidld2"
2) "fidld1"
127. 0.0.1:6379> hvals myhash #获取所有的values值
1) "world"
2) "yuan"
127. 0.0.1:6379> 
################################################################################################
127. 0.0.1:6379> hset myhash field3   #指定增量
(integer) 1
127. 0.0.1:6379> hincrby myhash field3 1  #自增1
(integer) 1
127. 0.0.1:6379> hincrby myhash field3 -1  #自减1
(integer) 0
127. 0.0.1:6379> hsetnx myhash field4 hello  #如果存在则创建成功
(integer) 1
127. 0.0.1:6379> hsetnx myhash field4 word  #不存在则创建失败
(integer) 0
127. 0.0.1:6379> 
################################################################################################
127. 0.0.1:6379> hset user:1 name yuan  #存贮一个user对象,名字为yuan
(integer) 1
127. 0.0.1:6379> hget user:1 name 获取suer对象的姓名为yuan
"yuan"
127. 0.0.1:6379> 

hash变更的数据user name age;尤其是是用户信息之类的,经常变动的信息! hash更适合于对象的存储,String更加适合字符串存储!

Zset(有序集合)

在set的基础上,增加了一个值,set k1 v1 zset k1 score1 v1

127. 0.0.1:6379> zadd myset 1 one  #添加一个值1指定分数  one 指定值
(integer) 1
127. 0.0.1:6379> zadd myset 2 two 3 three  添加多个值
(integer) 2
127. 0.0.1:6379> zrange myset 0 -1
1) "one"
2) "two"
3) "three"
127. 0.0.1:6381> ZSCORE myset two  #获取分数
"2"
127. 0.0.1:6381> zincrby myset 10  one  #给one自增10
 "11" 
################################################################################################
127. 0.0.1:6379> zadd salary 100 yuan
(integer) 1
127. 0.0.1:6379> zadd salary 200 yuan2
(integer) 1
127. 0.0.1:6379> zadd salary 210 yuan3
(integer) 1
127. 0.0.1:6379> zrangebyscore salary -inf +inf  #显示所有用户,从小到大排序!
1) "yuan"
2) "yuan2"
3) "yuan3"
127. 0.0.1:6379> zrevrange salary 0 -1  #显示所有用户,从大到小排序
1) "yuan3"
2) "yuan2"
3) "yuan1"    
127. 0.0.1:6379> zrangebyscore salary -inf +inf withscores  #显示所有用户,并且附带成绩
1) "yuan"
2) "100"
3) "yuan2"
4) "200"
5) "yuan3"
6) "210"
127. 0.0.1:6379> zrangebyscore salary -inf 200  withscores 显示小于等于200成绩的人员信息
1) "yuan"
2) "100"
3) "yuan2"
4) "200"
127. 0.0.1:6379> 
################################################################################################
#zrem 移除元素
127. 0.0.1:6379> zrange salary 0 -1
1) "yuan"
2) "yuan2"
3) "yuan3"
127. 0.0.1:6379> zrem salary yuan  #移除元素
(integer) 1
127. 0.0.1:6379> zrange salary 0 -1
1) "yuan2"
2) "yuan3"
127. 0.0.1:6379> zcard salary #查看集合的个数
(integer) 2
127. 0.0.1:6381> ZREMRANGEBYRANK myzset 0 1 #删除区间值
(integer) 2
################################################################################################
127. 0.0.1:6379> FLUSHDB
OK
127. 0.0.1:6379> zadd myset 1 yuan1 2 yuan2 3 yuan3  #获取区间值
(integer) 3
127. 0.0.1:6379> zcount myset 1 3
(integer) 3
127. 0.0.1:6379> 

案例思路: set 排序存储班级成绩表,工资表排序!普通消息,

重要消息2,带权重进行判断!

排行榜应用实现,

常用命令

常用命令
    1)连接操作命令
    quit:关闭连接(connection)
    auth:简单密码认证
    help cmd: 查看cmd帮助,例如:help quit

    2)持久化
    save:将数据同步保存到磁盘
    bgsave:将数据异步保存到磁盘
    lastsave:返回上次成功将数据保存到磁盘的Unix时戳
    shundown:将数据同步保存到磁盘,然后关闭服务

    3)远程服务控制
    info:提供服务器的信息和统计
    monitor:实时转储收到的请求
    slaveof:改变复制策略设置
    config:在运行时配置Redis服务器

    4)对key操作的命令
    del(key):删除一个key
    type(key):返回值的类型
    keys(pattern):返回满足给定pattern的所有key
    randomkey:随机返回key空间的一个
    keyrename(oldname, newname):重命名key
    dbsize:返回当前数据库中key的数目
    select(index):按索引查询
    move(key, dbindex):移动当前数据库中的key到dbindex数据库
    flushdb:删除当前选择数据库中的所有key
    flushall:删除所有数据库中的所有key

    5)String
    set(key, value):给数据库中名称为key的string赋予值value
    get(key):返回数据库中名称为key的string的value
    getset(key, value):给名称为key的string赋予上一次的value
    mget(key1, key2,…, key N):返回库中多个string的value
    setnx(key, value):添加string,名称为key,值为value
    setex(key, time, value):向库中添加string,设定过期时间time
    mset(key N, value N):批量设置多个string的值
    msetnx(key N, value N):如果所有名称为key i的string都不存在
    incr(key):名称为key的string增1操作
    incrby(key, integer):名称为key的string增加integer
    decr(key):名称为key的string减1操作
    decrby(key, integer):名称为key的string减少integer
    append(key, value):名称为key的string的值附加value
    substr(key, start, end):返回名称为key的string的value的子串

    6)List 
    rpush(key, value):在名称为key的list尾添加一个值为value的元素
    lpush(key, value):在名称为key的list头添加一个值为value的 元素
    llen(key):返回名称为key的list的长度
    lrange(key, start, end):返回名称为key的list中start至end之间的元素
    ltrim(key, start, end):截取名称为key的list
    lindex(key, index):返回名称为key的list中index位置的元素
    lset(key, index, value):给名称为key的list中index位置的元素赋值
    lrem(key, count, value):删除count个key的list中值为value的元素
    lpop(key):返回并删除名称为key的list中的首元素
    rpop(key):返回并删除名称为key的list中的尾元素
    blpop(key1, key2,… key N, timeout):lpop命令的block版本。
    brpop(key1, key2,… key N, timeout):rpop的block版本。
    rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为        dstkey的list的头部

    7)Set
    sadd(key, member):向名称为key的set中添加元素member
    srem(key, member) :删除名称为key的set中的元素member
    spop(key) :随机返回并删除名称为key的set中一个元素
    smove(srckey, dstkey, member) :移到集合元素
    scard(key) :返回名称为key的set的基数
    sismember(key, member) :member是否是名称为key的set的元素
    sinter(key1, key2,…key N) :求交集
    sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
    sunion(key1, (keys)) :求并集
    sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
    sdiff(key1, (keys)) :求差集
    sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
    smembers(key) :返回名称为key的set的所有元素
    srandmember(key) :随机返回名称为key的set的一个元素

    8)Hash
    hset(key, field, value):向名称为key的hash中添加元素field
    hget(key, field):返回名称为key的hash中field对应的value
    hmget(key, (fields)):返回名称为key的hash中field i对应的value
    hmset(key, (fields)):向名称为key的hash中添加元素field 
    hincrby(key, field, integer):将名称为key的hash中field的value增加integer
    hexists(key, field):名称为key的hash中是否存在键为field的域
    hdel(key, field):删除名称为key的hash中键为field的域
    hlen(key):返回名称为key的hash中元素个数
    hkeys(key):返回名称为key的hash中所有键
    hvals(key):返回名称为key的hash中所有键对应的value
    hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value
avatar

yuanyourdomain

写代码,做研究,记录生活。

RECOMMENDED

MyBatis 动态 SQL

2026-07-08

Nginx 基础入门

2026-07-08

Maven 多模块与私服

2026-07-08