(03)redis的5种数据类型及其基本操作
Posted 明月之诗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(03)redis的5种数据类型及其基本操作相关的知识,希望对你有一定的参考价值。
redis支持5种数据类型:【字符串:String】、【散列(哈希):Hash】、【列表:List】、【集合:Set】、【有序集合:SortedSet(zset)】,下面分别介绍5中数据类型的常用命令以及应用场景。
1、String类型
(01)赋值:set key value
(02)取值:get key
(03)先获取旧值、再设置新值:getset key value
(04)多个赋值:mset key1 value1 key2 value2 key3 value3 ...
(05)多个取值:mget key1 key2 key3 ...
(06)删除key:del key
(07)使值递增1:incr
(08)使值递增n:incrby key n
(09)使值递减1:decr
(10)使值递减n:decrby key n
(11)使值尾部追加:append key value
(12)获取值的长度:strlen key
应用场景:分布式数据库利用自增做主键,第一可以防止主键重复,第二也可以规定某个数据库的id范围,从第几开始。
2、Hash类型
(01)赋值:hset key field value
(02)取值:hget key field
(03)多个字段赋值:hmset key field1 value1 field2 value2 field3 value3 ...
(04)多个字段取值:hmget key field1 field2 field3 ...
(05)存在则修改、不存在则插入:hsetnx key field value
(06)获取key的所有字段:hgetall key
(07)删除key的某个字段:hdel key field
(08)使key某个字段的值递增n:hincrby key field n
(09)判断key的某个字段是否存在:hexists key field
(10)获取某个key的所有字段名:hkeys key
(11)获取某个key的所有字段值:hvals key
(12)删除key:del key
应用场景:设置商品信息,假如用String类型保存商品信息,修改的话要解析json、修改后再封装json保存。但是Hash类型则可以根据key的字段修改值。
3、List类型 (redis中使用的双向链表)
(01)向左端增加元素:lpush key value1 value2 value3 ...
(02)向右端增加元素:rpush key value1 value2 value3 ...
(03)查看下标在startindex 和 stopindex之间的元素:lrange key startindex stopindex,stopindex = -1 代表右边全部的
(04)从左边返回并删除元素:lpop key
(05)从右边返回并删除元素:rpop key
(06)获取列表中元素的个数:llen key
(07)根据值删除元素:lrem key count value(删除前count个值为value的元素)count>0从左边开始删,count<0右边开始,count=0删除全部。
(08)根据下标值查找元素:lindex key index
(09)给指定的下标设置元素值:lset key index value
(10)根据下标保留指定元素,删除其余的:ltrim key startindex stopindex
(11)从左向右查找,在指定元素的左(before)右(after)插入元素:linsert key before|after findValue targetValue。
(12)将元素从一个列表转移到另一个列表:rpoplpush fromkey tokey(又端弹出,左端压入)
应用场景:存放商品的评论列表,key是商品编号,value是商品评论的json串,一个商品可以有好多评论。
4、Set类型
(01)添加元素:sadd key value1 value2 value3 value4 ...
(02)删除元素:srem key value1 value2 value3 value4 ...
(03)获取集合中所有元素:smembers key
(04)判断元素是否在集合中:sismember key value
(05)获取集合差集(属于A,不属于B的元素):sdiff keyA keyB
(06)获取集合交集(属于A,也属于B的元素):sinter keyA keyB
(07)获取集合并集(属于A、B中的全部元素):sunion keyA keyB
(08)获取集合中元素的个数:scard key
(09)从集合中随机弹出一个元素:spop key
应用场景:根据集合与列表的区别,要求无序、不重复的可以用集合。
5、SortedSet(zset)类型
有序集合是在集合的基础上每个元素关联了一个分数,可以提供与分数有关的操作,如获取分数最高、最低的前n个元素,根据分数范围获取元素等。
(01)添加元素:zadd key score value score2 value2 score3 value3 ...(如果元素存在,会用新分数替换旧分数)
(02)获取指定元素的分数:zscore key value
(03)删除指定元素:zrem key value
(04)按照分数从小到大,返回下标范围之间的元素:zrange key startindex stopindex
(05)按照分数从大到小,返回下标范围之间的元素:zrevrange key startindex stopindex
(06)按照分数从小到大,返回下标范围之间的元素,并获取分数:zrange key startindex stopindex withscores
(07)按照分数从大到小,返回下标范围之间的元素,并获取分数:zrevrange key startindex stopindex withscores
(08)获取指定分数范围的元素:zrangebyscore key minScore maxScore [withscores]
(09)获取指定分数范围的元素,从第offset个开始,总共取count个:zrangebyscore key minScore maxScore limit offset count [withscores]
(10)增加某个元素的分数:zincrby key addScore value(给value增加addScore分)
(11)获得集合中元素的数量:zcard key
(12)获得指定分数范围为元素数量:zcount key minScore maxScore
(13)按照排名范围删除元素:zremrangebyrank key startIndex stopIndex
(14)按照分数范围删除元素:zremrangebyscore key minScore maxScore
(15)从小到大获取元素的排名:zrank key value
(16)从大到小获取元素的排名:zrevrank key value
应用场景:商品销售排行榜,score是销售量、value是商品id
以上是关于(03)redis的5种数据类型及其基本操作的主要内容,如果未能解决你的问题,请参考以下文章