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的排名