天天看点

redis的数据类型以及使用场景

redis主要有5中数据类型:String、Hash、List、Set、Sorted Set

一、String

String类型是属于redis中最基本的类型,可以认为String类型可以存储任意类型的数据,比如普通的字符串、图片、序列化对象等,每个key所存储的value最大为512M

常用命令

set key value [ex seconds] [px milliseconds]#设置指定的key的值(可以加ex 5表示过期时间5s)

get key #获取指定的key的值

mset key1 value1 key2 value2 key3 value3 #同时设置多个key-value对

mget key1 key2 key3 #获取给定的key1 key2 key3的值

setnx key value #在key不存在的情况下才设置,设置成功返回1,设置失败返回0,可用来实现分布式锁

incr key #将key中存储的数字值加1

decr key #将key中存储的数字值减1

二、Hash

Hash类型存储的是一组field-value的映射,可用来存储对象,或者用来存储一组类似结构化的数据,是一种类似java中map的结构,可以直接操作每个field-value,每一个hash可以存储键值对field-value原则上没有限制(内存限制除外)

常用的命令

hset key field value #把field-value存入哈希表key中

hget key field #从哈希表key中查询field的值

hdel key field #从哈希表key中删除field-value对

hgetall key #获取哈希表key中的所有field-value对

hkeys key #获取哈希表key中的所有field

hvals key #获取哈希表key中的所有value

hlen key #获取哈希表key中的字段数量

三、List

List类型是一个简单字符串双向链表,可以把元素插入到列表的左右两边。List类型的作用是可以存储客户列表、好友列表等,支持类分页功能快速返回,可以实现栈、队列等相关功能

常用命令

blpop key timeout #抛出队列key的队首元素,如果没有会阻塞直到有元素或者超时返回

brpop key timeout #抛出队列key的队尾元素,如果没有会阻塞直到有元素或者超时返回

lindex key index #从队首开始,获取列表中index位置的元素

llen key #获取列表key的长度

lpop key #抛出队列key的队首元素,如果元素不存在返回空

rpop key #抛出队列key的队尾元素,如果元素不存在返回空

lpush key value1 value2 #将一个或者多个元素插入队列key的队首

rpush key value1 value2 #将一个或者多个元素插入队列key的队尾

lrange key start stop #获取队列指定范围的元素列表,可以设置start=0 stop=-1获取整个列表的元素,这个命令可以实现分页的功能

lset key index value #从队首开始,设置队列中索引位置为index的值为value

lrem key count value #移除队列key中的count个数量的与value相同的元素,count>0,从队首开始计算,count<0从队尾开始计算,count=0移除所有

四、Set

Set类型是字符类型的无序集合,与java中的Set类型类似,都是通过Hash表实现的,不能存在重复元素。常用于集群系统中的全局去重,可通过redis提供的命令实现获取两个集合间的交集、并集、差集等,比如获取两个经纪人拥有共同的客户、两个人的共同好友等

常用命令

sadd key value1 value2 #向集合中添加一个或者多个元素

srem key value1 value2 #删除集合中一个或者多个元素

smembers key #查询集合key中的所有元素

sismember key value #判断集合key中是否包含了value这个元素

scard key #获取集合中元素个数

spop key #随机移除并返回一个元素

smove key1 key2 value #将元素value从集合key1移动到集合key2中

sdiff key1 key2 #返回第一个集合key1与集合key2的差异

sdiffstore key1 key2 key3 #求集合key2开始多个集合间的差集并存储到集合key1中

sinter key1 key2 #返回所有集合的交集

sinterstore key1 key2 key3 #求集合key2开始多个集合间的交集并存储到集合key1中

sunion key1 key2 #返回给定集合的并集

sunion key1 key2 key3 #求集合key2开始多个集合间的并集并存储到集合key1中

五、Sorted Set

sorted set是一个有序集合,也是通过哈希表实现,区别的地方在于每个元素会额外的拥有一个分数的属性,分数可相同,redis自动按分数从小到大进行排序。

常用命令

zadd key score1 value1 score2 value2 #向有序集合添加一个或者多个元素,如果元素已存在则更新分数

zrem key value1 value2 #移除集合key中的一个或者多个元素

zremrangebyrank key min max #移除集合key中排名在min到max之间的所有元素

zremrangebyscore key min max #移除集合key中分数在min到max之间的所有元素

zrank key value #查询集合key中元素value的索引

zscore key value #查询集合key中元素value的分数

zcard key #查询集合key的元素总数

zcount key min max #查询分数在min到max之间的元素总数

zrevrange key min max [withscores] #查询集合key中索引在min到max之间的元素,如果加withscores参数,返回分数

zrevrangebyscore key min max [withscores] #查询集合key中分数在min到max之间的袁术,如果加withscores,返回分数

zrevrank key value #查询集合key中value的排名

继续阅读