redis的各大数据类型

Redis数据类型(String,Hash,List,Set,SortedSet)

1.String 类型

1.1 赋值

语法:SET key value

1.2 取值


语法:GET key

1.3 设置/获取多个键值 multipart 多部分


语法:
mset key value[key value...]
mget key [key...]

1.4取值并且赋值(返回的是以前的值)


语法:getset key value

1.5删除


语法:Del key

1.6数值的增减

1.6.1递增数值


语法:incr key

1.6.2增加指定的整数 步进数


语法:incr key increament

1.6.3递减数值


语法:decr key

1.6.4减少指定的整数 步进数


语法:decrby key decreament

1.7向尾部追加值


语法:append key value

1.8获取字符串长度


语法:strlen key

2.Hash类型

介绍:

假设有User对象以JSON序列化的形式存储到Redis中,User对象有id,username、password、age、name等属性,存储的过程如下:
保存、更新:
User对象 à json(string) à redis
如果在业务上只是更新age属性,其他的属性并不做更新我应该怎么做呢? 如果仍然采用上边的方法在传输、处理时会造成资源浪费,下边讲的hash可以很好的解决这个问题。

2.1赋值


一次只能设置一次字段值
语法:hset key field value

一次可以设置多个字段值
语法:hmset key field value[field value ...]

当字段不存在时赋值,类似hset,区别在于如果字段存在,该命令不执行任何操作
语法:hsetnx key field value

2.2取值


一次只能取一次字段值
语法:hget key field

一次可以取多个字段值
语法:hget key field[field...]

获取所有的字段值
语法:hgetAll key

2.3删除字段


可以删除一个或者多个字段,返回值时被删除的字段个数
语法:hdel key field[field...]

2.4增加字段


给整数字段值进行递增
语法:hinsertby key field increment

2.5判断字段是否存在


语法:Hexists key field

2.6只获取字段名或者字段值


语法:
hkeys key
hvals key

2.7获取字段数量


语法:
hlen key

3.List类型


介绍:
列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。
列表类型内部是使用双向链表(double linked list)实现的,所以向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。

3.1向列表两边增加元素


语法:
向列表左边增加元素 push 堆栈 push——>推
lpush key value[value...]

语法:
向列表右边增加元素
rpush key value[value...]

3.2查看列表


语法:lrange key start stop

3.3从列表两端弹出元素


语法:
lpop key
rpop key

3.4获取列表中元素的个数


语法:
llen key

3.5删除列表中指定的值


语法:
LREM命令会删除列表中前count个值为value的元素,返回实际删除的元素个数
lrem key count value

3.6获取/设置指定索引的元素值

语法:
	获取指定索引的元素值
	lindex key index


语法:
	设置指定索引的元素值
	lset key index value


3.7只保留列表指定片段

语法:
	指定范围和lrange一致
	ltrim key start stop


3.8向列表中插入元素

语法:
	该命令首先会在列表中从左到右查找值为pivot的元素,然后根据第二个参数是BEFORE还是AFTER来决定将value插入到该元素的前面还是后面。
	linsert key Before/After point value


3.9将元素从一个列表转移到另一个列表中

语法:
	rpoplpush source destination


4Set类型

介绍:
	集合中的数据是不重复且没有顺序


4.1增加/删除元素

语法:
	SADD key member[member...]


语法:
	STREM key member[member...]


4.2获取集合中的所有元素

语法:
	smembers key


4.3判断元素是否在集合中

语法:
	sismember key member


4.4集合的差集运算

语法:
	属于A并且不属于B的元素构成的集合。
	sdif key value


4.5集合的交集运算

语法:
	属于A且属于B的元素构成的集合
	sinter key[key...]


4.6集合的并集运算

语法:
	属于A或者属于B的元素构成的集合
	sunion key[key...]


4.7获得集合中元素的个数

语法:
	scard key


4.8从集合中弹出一个元素

语法:
	spop key


5 SortedSet类型zset

介绍:
	在集合类型的基础上,有序集合类型为集合中的每个元素都关联一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在在集合中,还能够获得分数最高或最低的前N个元素、获取指定分数范围内的元素等与分数有关的操作。 

在某些方面有序集合和列表类型有些相似。 
1、二者都是有序的。 
2、二者都可以获得某一范围的元素。 
但是,二者有着很大区别: 
1、列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会变慢。 
2、有序集合类型使用散列表实现,所有即使读取位于中间部分的数据也很快。 
3、列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改分数实现) 
4、有序集合要比列表类型更耗内存。 



5.1增加元素


语法:
向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素。
zadd key score member[score member...]

5.2获取元素的分数

语法:
	zscore key member


5.3删除元素

语法:
	移除有序集key中的一个或多个成员,不存在的成员将被忽略。
当key存在但不是有序集类型时,返回一个错误。
	zrem key member[member...]


5.4获取排名在某个范围的元素列表

语法:
	按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素) 
	ZRANGE key start stop [WITHSCORES]


语法:
	按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素(包含两端的元素)
	ZREVRANGE key start stop [WITHSOCRES]


5.5获取指定分数范围的元素

语法:
	ZRANGEBYSCORE KEY MIN MAX[WITHSCORES][LIMIT offset count]


5.6 增加某个元素的分数

语法:
	返回值是更改后的分数
	zincrby key increment member


5.7获取集合中元素的数量

语法:
	zcard key


5.8获取指定分数范围内的元素个数

语法:
	zcount key min max


5.9按照排名范围删除个数

语法:
	zremrangebyrank key start stop


5.9.1按照分数范围删除元素

语法:
	zremrangebyscore key min max


5.9.2获取元素的排名

语法:
	从小到大
	 zrank key member


语法:
 	从大到小
 	zrevrank key member


原文地址:https://www.cnblogs.com/xiaojiDream/p/14833412.html