Redis--五种数据类型的基本使用

一、五种基本数据类型

字符串、哈希、列表、集合、有序集合(string、hash、list、set、zset)

 

二、字符串的使用(string)

字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据,序列化后的数据,json化的对象甚至是一张图片,最大512m

优点:简单直观,每个键对应一个值

缺点:键数过多,占用内存多,用户信息过于分散,不用于生成环境

常用命令使用:

语法作用
set key value将字符串值value设置到key中
get key获取key中设置的字符串值 (如果key存在,则返回value,否则返回nil,相当于null)
incr key将key中存储的数字值加1,如果key不存在,则key的值先被初始化为0再执行incr操作(只能对数字类型的数据操作)
decr key与incr相反,自减操作
del key删除key值
strlen key返回key所存储的字符串的长度。返回值:如果key存在,返回字符串的长度,否则返回0
getrange key start end获取key中字符串值从start开始到end结束的子字符串,包括start和end,负数表示从字符串的末尾开始,-1表示最后一个字符 返回值:截取的子字符串  一般getrange key 0 -1
mset key value同时设置一个或多个 key-value 对 返回值:OK
mget key [key....]获取所有(一个或多个)给定key的值 返回值:包含所有key的列表
set key value nx ex 10设置一个键,值为value,nx为如存在键则不成功,否则则设置键,ex为秒过期时间 1000(分布式)
set key value nx px 10000设置一个键,值为value,nx为如存在键则不成功,否则则设置键,p为x毫秒过期时间 1000(分布式)
pttl key查询键过期时间毫毛值
ttl查询键过期时间秒值

linux实操:



 

三、哈希的使用(hash)

Redis,hash是一个String类型的field和value的映射表hash特别适用于存储对象

优点:简单直观,使用合理可减少内存空间消耗

缺点:要控制ziplist与hashtable两种编码转换,且hashtable会消耗更多内存erialize(userInfo)

常用命令使用:

语法作用
hset key field value将哈希表key中的域field的值设为value
hget key field获取哈希表key中给定域field的值;返回值:field域的值,如果key不存在或者field不存在返回nil
hmset key field[field value..]同时将多个field-value设置到哈希表key中
hmget key field[field...]获取多个hash值
hlen key获取key的长度
hdel key field [field...]删除哈希表key中的一个或多个指定域field,不存在field直接忽略 返回值:成功删除field的数量
hincrby key age 1age+1
hkeys key查看哈希表key中的所有域 返回值:包含所有field的列表,key不存在返回空列表
hvals key返回哈希表中所有域的值 返回值:包含哈希表所有域值的列表,key 不存在返回空列表
hexists key field查看哈希表key中,给定域field是否存在 返回值:存在返回1,其它返回0
hgetall key获取key的所有信息,全选功能

linux实操:

 

四、列表的使用(list)

redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左部)或者尾部(右边)

左右添加,有索引,链表维护

常用命令使用:

语法作用
Ipush key value [value...]将一个或多个值value插入到列表key的表头(最左边),从左边开始加入值,从左到右的顺序依次插入到表头 返回值:数字,新列表的长度
rpush key value [value...]将一个或多个值value 插入到列表key的尾部(最右边),各个value值按从左到右的顺序依次插入到尾部 返回值:数字,新列表的长度
lpop key从左边弹出一个元素
rpop key从右边弹出一个元素
Irange key start stop获取列表key中指定区间内的元素;lrange key 0 -1 取出全部
lindex key index获取列表key中下标为指定index的元素,列表元素不删除,只是查询
llen key获取列表key的长度 返回值:数值,列表长度,key不存在返回0
lrem key count value根据参数count的值,移除列表中与参数value相等的元素两(两个值),count>0,从列表的左侧向右开始移除;count<0从列表的尾部开始移除;count=0移除表中所有与value相等的值 返回值:数值,移除的元素的值
lset key index value将列表key下标为index的元素的值设置为value
linsert key before|after pivot value将值value插入到列表key当中位于值pivot之前或之后的位置

linux实操:

 

五、集合的使用(set)

redis的set是string类型的无序集合,集合成员是唯一的,即集合中不能出现重复的数据

常用命令使用:

语法作用
sadd key member [member...]将一个或多个member元素加入到集合key当中,已经存在于集合的member元素被忽略掉,不会再加入
smembers key获取集合key中的所有成员元素,不存在的key视为空集合
sismember key member判断member元素是否是集合key的成员
scrad key获取集合里面的元素个数
srem key member[member...]删除集合key中的一个或多个member元素,不存在的元素被忽略
srandmember key count只提供key,随机返回集合中一个元素,元素不删除,依然在集合中。提供了count时,count正数,返回包含count个数元素的集合,集合元素各不相同
spop key count只有key则随机从集合中删除一个元素。有count则随机删除的count个元素个数

linux实操:

 

六、有序集合的使用(zset)

redis有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员不同的是zset的每个元素都会关联一个分数,redis通过分数来为集合的成员进行从小到大的排序

常用于排行榜,如视频网站需要对用户上传视频做排行榜,或点赞数与集合有联系,不能有重复的成员

常用命令使用:

语法作用
zadd key score member [score member...]将一个或多个 member 元素及其score值加入到有序集合key中,如果member存在集合中,则更新值
zrange key start stop[withscores]查询有序集合,指定区间之内的元素。集合成员按score值从小到大来排序;带withscores选项让score和value一同返回
zrevrange key start stop[withscores]返回有序集key中,指定区间内的成员,其中成员的位置按score值递减(从大到小来排序)
zrem key member[member...]删除有序集合key中的一个或多个成员,不存在的成员被忽略
zcard key获取有序集key的元素成员的个数
zrangebyscore key min max[withscores][limit offset count]获取有序集key中,所有score值介于min和max之间(包括min和max)的成员,有序成员是按递增(从小到大)排序zrangebyscore key 60 90
zcount key min max返回有序集key中,score值在min和max之间(默认包括score值等于min或max的成员的数量)zcount key 60 90

linux实操:

 

 

 

 


版权声明:本文为qq_41055045原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。