A brief introduction to the five data types of Redis

Redis is divided into five basic data types: String, Hash, List, Set, SortedSet

1.String

set key value

Check get key

set oldkey newvalue

del key


Composite: getset first set and then get

Self-increment: incr key is equivalent to key++

Decrement : decr key is equivalent to key--


2.hash

Features: Similar to Java's HashMap, it is also a key-value pair format, the keys cannot be repeated, and the query is fast

increase

hset library name key value one

hmset library name key value key value ... multiple entries

check

hget library key one

hmget library key key key ... multiple

hgetall library key-value pair

change

hset library existing key

delete

hdel library key delete record

hdel library delete library

3. Store the list

1) The underlying structure of ArrayList is an array, which is fast to search according to the index, and slow to add or delete.

2)Linkedlist底层使用链表,根据指针增删快,查询需要通过下标,从头开始,速度慢

linkedlist


常用命令:

头部 : lpush key value1 value2…

尾部 : rpush key value1、value2…

lrange key start end

获取链表中从start到end的元素的值,start和end从0开始计数

如果值为负数,表示从链尾开始获得

llen key

获取元素个数

lset key index value

index : 0为头元素

-1为尾元素

lrem 个数 value 指定

个数为正数,从头到尾查找删除,

个数为负数,从尾到头查找删除,

个数为0,删除所有

lpop key 左端开始

如果该key不存在,返回nil

rpop key 右端开始

5.扩展
仅当参数中指定的key存在时,向关联的list的头部插入value。如果不存在,将不进行插入。
lpushx  key value 从左边插入
rpushx key value 从右边插入
在pivot元素前或者后插入value这个元素
linsert  key before|after pivot value
rpoplpush 库1 库2
将库1的最后一个元素移动到库2的头部
使用场景:
一般用于消息队列的服务,一个程序完成添加新元素的动作被称为"生产者"
一个程序完成取元素的动作被称为"消费者"如果在消费者取出元素后,程序立刻崩溃,而取出去元素又未被处理,容易导致数据丢失,所以可以使用RPOPLPUSH命令,从主消息队列中取出消息之后再将其插入到备份队列中,直到消费者程序完成正常的处理逻辑后再将该消息从备份队列中删除

4.存储set
在redis中可以将set类型看成没有排序的字符集合,set集合中不允许出现重复的元素;

常用命令:
sadd key value1、value2…
smembers key 获取set中所有的成员
sismember key member 判断参数中指定的成员是否在该set中,1存在,0不存在
scard key 获取元素个数
改:无
srem key value
特性:
集合的差集运算 A-B
sdiff key1 key2 返回属于key1不属于key2的元素。即返回差集
集合的交集运算 A ∩ B
sinter key1 key2 key3…:返回交集。
集合的并集运算 A ∪ B
sunion key1 key2 key3…:返回并集
扩展
srandmember key:随机返回set中的一个成员

sdiffstore destination key1 key2…:将key1、key2相差的成员存储在destination上
sinterstore destination key[key…]:将返回的交集存储在destination上
sunionstore destination key[key…]:将返回的并集存储在destination上
使用场景:
1.可以使用redis的set数据类型跟踪一些唯一性数据,比如访问某一博客的唯一ip地址信息,我们将每次访问该博客的访问者的ip存入redis中,set数据类型会自动保证ip地址的唯一性.
2.充分利用set类型的服务端聚合操作方便,高效的特性,可以用于维护数据对象之间的关联关系.

5.存储sortedset
概述:sorted - set也是字符串的集合,不允许出现重复的元素,sorted-set较之于set的区别在于:它的每一个成员都会有一个分数与之相连.redis通过分数进行排序,但是成员唯一,分数是可以重复的.

常用命令:
增:
zadd key score member score2 member2 …元素存在会被覆盖
查:
zscore key member:返回指定成员的分数
zcard key:获取集合中的成员数量
zrange key start end [withscores]:获取区间元素及分数
zrevrange key start stop [withscores]: 降序排列
改:
zadd key newScore oldv
删:
zrem key member:移除集合中指定的成员,可以指定多个成员
zremrangebyrank key start stop: 按照排名范围删除元素
zremrangebyscore key min max:按照分数范围删除元素
扩展:
zrangebyscore key min max [withscores] [limit offset count]:返回分数在[min,max]的成员并按照分数从低到高排序
offset表明从脚标为offset的元素开始并返回count个成员
zincrby key increment member:设置指定成员的增加的分数。返回值是更改后的分数
zcount key min max:获取分数在[min,max]之间的成员
zrank key member:返回成员在集合中的排名。(从小到大)
zrevrank key member:返回成员在集合中的排名。(从大到小
使用场景:
1.可以用于在线游戏的积分排行榜,当玩家分数改变时,可以使用zadd命令更相信分数,再通过zrange获取积分topten的用户信息,
2.用于构建索引数据


Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324659761&siteId=291194637