Redis数据类型(String、List、Hash、Set、Sorted Set)

文章目录

  • Redis数据类型
  • 一、String数据类型
    • 1、append
    • 2、set
    • 3、strlen
    • 4、incr、decr、incrby、decrby
    • 5、getset
    • 6、setex
    • 7、setnx
    • 8、mset、mget、msetnx
  • 二、List数据类型
    • 1、lpush、lpushx、lrange
    • 2、lpop、llen
    • 3、lrem、lset、lindex、ltrim
    • 4、linsert
    • 5、rpush、rpushx
    • 6、rpop、rpoplpush
  • 三、Hash数据类型(散列类型)
    • 1、hset、hget、hdel、hexists、hlen、hsetnx
    • 2、hincrby
    • 3、hmset、hmget、hgetall、hkeys、hvals
  • 四、set数据类型(无序集合)
    • 1、sadd、smembers、scard、sismember
    • 2、spop、srem、srandmember、smove
  • 五、Sorted Set数据类型(zset、有序集合)
    • 1、zadd、zcard、zcount、zrem、zincrby、zscore、zrank
    • 2、zrangebyscore、zremrangebyrank、zremrrangebyscore
    • 3、zrevrange、zrevrangebyscore、zrevrank

Redis数据类型

一、String数据类型

概述:String是redis最基本的类型,最大能存储512MB的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等

1、append

1、append   #Redis的append命令是往一个key追加value。如果没有key,则创建一个并且设置value
例:
redis-cli
exists blue
append blue hello
append blue lic
get blue

Redis数据类型(String、List、Hash、Set、Sorted Set)_第1张图片

2、set

2、SET  	#获取数据,命令格式为 get key
例:
set blue 'hello lic!'
get blue

在这里插入图片描述

3、strlen

3、strlen  	#获取指定Key的字符长度
例:
strlen blue

在这里插入图片描述

4、incr、decr、incrby、decrby

4、incr 	#该Key的值递增1
   decr   	#该Key的值递减1
   incrby 	#增加指定的整数
   decrby	#减少指定的整数
例:
set sky 10
incr sky
decr sky
incrby sky 10
decrby sky -46
get sky
del sky
keys *
incr sky
keys *

set sky white
get sky
incr sky

Redis数据类型(String、List、Hash、Set、Sorted Set)_第2张图片
Redis数据类型(String、List、Hash、Set、Sorted Set)_第3张图片

5、getset

5、getset  #获取计数器原有值的同时,并将其设置为新值,这两个操作原子性的同时完成
例:
incr white
getset white 0
get white

6、setex

6、setex   #设置指定Key的过期时间为xx秒
   ttl key #查看键的剩余存活时间
例:	
setex white 20 'kiki'
ttl white
get white
等待20s
get white
ttl white
set white 'kiki'
ttl white

Redis数据类型(String、List、Hash、Set、Sorted Set)_第4张图片

7、setnx

7、setnx  #创建指定键,若该键存在则不执行,不存在则执行
例:
del white
setnx white lic
setnx white kiki
get white

Redis数据类型(String、List、Hash、Set、Sorted Set)_第5张图片

8、mset、mget、msetnx

8、mset		#批量设置键的值
   mget		#批量获取键的值
   msetnx		#批量设置键值,若有存在的键则不执行
例:
mset k1 blue k2 sky
mget k1 k2
msetnx k2 white k3 cloud
keys k*
msetnx k4 white k3 cloud
keys k*

Redis数据类型(String、List、Hash、Set、Sorted Set)_第6张图片

二、List数据类型

概述:列表的元素类型为string,按照插入顺序排序,在列表的头部或尾部添加元素

1、lpush、lpushx、lrange

1、lpush  	#该命令会创建该键及与其关联的List,之后在将参数中的values从左到右依次插入到表头
   lpushx	#该命令仅当key存在时,将value值插入表头
   lrange	#返回列表中指定区间内的元素,0表示第一个元素,1表示第二个元素
例:
lpush cloud a b c d
lrange cloud 0 -1
lpushx cloudd e
keys c*
lpushx cloud e
lrange cloud 0 -1

Redis数据类型(String、List、Hash、Set、Sorted Set)_第7张图片

2、lpop、llen

2、lpop		#移除并返回第一个元素,从头开始
   llen		#查看列表中元素个数

Redis数据类型(String、List、Hash、Set、Sorted Set)_第8张图片

3、lrem、lset、lindex、ltrim

3、lrem		#从头部(left)向尾部(right)变量链表,删除2个值等于a的元素,返回值为实际删除的数量
   lset		#将索引值为xxx的元素值设置为新值xxx
   lindex	#获取索引值为xxx的元素值。
   ltrim	#仅保留索引值xxx到xxx的元素
例:
del cloud
lpush cloud a b c b b a
lrange cloud 0 -1
lrem cloud 2 b
lrange cloud 0 -1

lset cloud 1 b
lrange cloud 0 -1

lindex cloud 3
ltrim cloud 0 2
lrange cloud 0 -1

Redis数据类型(String、List、Hash、Set、Sorted Set)_第9张图片

4、linsert

4、linsert		#在键的xxx元素前|后插入新元素元素 
例:
del cloud
lpush cloud a b c d e 
lrange cloud 0 -1
linsert cloud before a 0
linsert cloud after e 1
lrange cloud 0 -1

Redis数据类型(String、List、Hash、Set、Sorted Set)_第10张图片

5、rpush、rpushx

5、rpush		#将值从左往右依次插入到表尾
   rpushx		#指定键存在时执行,否则不执行
例:
del key1
del key2
rpush key1 a b c d e
lrange key1 0 -1

rpushx key1 f
rpushx key2 f
keys key?

Redis数据类型(String、List、Hash、Set、Sorted Set)_第11张图片

6、rpop、rpoplpush

6、rpop			#移除并返回键的第一个元素,从尾开始
   rpoplpush	#将键1尾部元素xxx弹出,同时再插入到键2的头部(原子性的完成这两步操作)
例:
rpop key1
lrange key1 0 -1
rpoplpush key1 key2	
keys key?
lrange key2 0 -1

lrange key1 0 -1
rpoplpush key1 key1
lrange key1 0 -1

Redis数据类型(String、List、Hash、Set、Sorted Set)_第12张图片

三、Hash数据类型(散列类型)

概述:hash用于存储对象。可以采用这样的命名方式:对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。 如:存储 ID 为 2 的汽车对象。
如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。

1、hset、hget、hdel、hexists、hlen、hsetnx

1、hset			#给xxx键设置字段为xxx,值为xxx
   hget			#获取xxx键,字段为xxx的值
   hdel			#删除xxx键的xxx字段,成功返回1
   hexists		#判断xxx键中的xxx字段是否存在,存在返回1
   hlen			#获取xxx键的字段数量
   hsetnx		#给xxx键添加新字段,是否执行基于此字段是否存在,不管键是否存在,返回1表示执行成功
例:
hset hash field1 a field2 b field3 c
hget hash field1
hdel hash field2

hexists hash field2
hlen hash

hsetnx hash1 field3 d
keys has*
hsetnx hash field3 d

Redis数据类型(String、List、Hash、Set、Sorted Set)_第13张图片

2、hincrby

2、hincrby		#给xxx键的xxx字段值加x
例:
hincrby hash3 field1 5
hincrby hash3 field1 -71

3、hmset、hmget、hgetall、hkeys、hvals

3、hmset		#批量为xxx键创建字段和赋值
   hmget		#获取指定多个字段值
   hgetall		#返回xxx键的所有字段及其值,是逐对列出的
   hkeys		#仅获取xxx键中所有字段名
   hvals		#仅获取xxx键中所有字段值
例:
del hash4
del hash5
hmset hash4 field1 hello field2 world
hmget hash4 field1 field2
hkeys hash4
hvals hash4

hset hash5 field1 hello field2 lic
hget hash5 field1 field2
hmget hash5 field1 field2
hkeys hash5
hvals hash5

Redis数据类型(String、List、Hash、Set、Sorted Set)_第14张图片

四、set数据类型(无序集合)

概述:无序集合,元素类型为String类型,元素具有唯一性,不允许存在重复的成员。多个集合类型之间可以进行并集、交集和差集运算。
应用范围:
1.可以使用Redis的Set数据类型跟踪一些唯一性数据,比如访问某一博客的唯一IP地址信息。对于此场景,我们仅需在每次访问该博客时将访问者的IP存入Redis中,Set数据类型会自动保证IP地址的唯一性。
2.充分利用Set类型的服务端聚合操作方便、高效的特性,可以用于维护数据对象之间的关联关系。比如所有购买某一电子设备的客户ID被存储在一个指定的Set中,而购买另外一种电子产品的客户ID被存储在另外一个Set中,如果此时我们想获取有哪些客户同时购买了这两种商品时,Set的intersections命令就可以充分发挥它的方便和效率的优势了。

1、sadd、smembers、scard、sismember

1、sadd				#将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合
   smembers			#通过smembers命令查看插入的结果,输出的顺序与插入顺序无关
   scard			#获取集合中成员的数量
   sismember		#判断键中xxx成员是否存在,返回0表示不存在,1表示存在
例:
sadd myset a b c d e
smembers myset
scard myset
sismember myset c
sismember myset f

Redis数据类型(String、List、Hash、Set、Sorted Set)_第15张图片

2、spop、srem、srandmember、smove

2、spop				#随机的移除并返回键中的某一成员
   srem				#从键中移出xxx、xxx、xxx成员,并返回移出成员个数
   srandmember		#该命令随机的返回某一成员
   smove 			#将键1的xxx成员移到键2,成功返回1,失败返回0
例:    
del myset
sadd myset a b c d e

spop myset
smembers myset
srem myset a b c 
smembers myset

srandmember myset
smove myset myset1 e
keys myse*

Redis数据类型(String、List、Hash、Set、Sorted Set)_第16张图片

五、Sorted Set数据类型(zset、有序集合)

概述:a、有序集合,元素类型为Sting,元素具有唯一性,不能重复。
b、每个元素都会关联一个double类型的分数score(表示权重),可以通过权重的大小排序,元素的score可以相同。

应用范围:
1)可以用于一个大型在线游戏的积分排行榜。每当玩家的分数发生变化时,可以执行ZADD命令更新玩家的分数,此后再通过ZRANGE命令获取积分TOP10的用户信息。当然我们也可以利用ZRANK命令通过username来获取玩家的排行信息。最后我们将组合使用ZRANGE和ZRANK命令快速的获取和某个玩家积分相近的其他用户的信息。
2)Sorted-Set类型还可用于构建索引数据。

1、zadd、zcard、zcount、zrem、zincrby、zscore、zrank

1、zadd			#将一个或多个成员元素及其分数值加入到有序集当中
   zcard		#获取键中成员的数量
   zcount		#分数满足表达式x <= score <= x的成员的数量
   zrem		 	#删除成员xxx、xxx,返回实际删除成员的数量
   zincrby	 	#成员xxx不存在,zincrby命令将添加该成员并假设其初始分数为0
   zscore		#获取成员xxx的分数
   zrank		#获取成员xxx的位置索引值
例:
zadd zset 1 a 2 b 3 c 4 d 5 e

zrange zset 0 -1
zrange zset 0 -1 withscores

zrank zset e
zcard zset
zcount zset 2 4
zrem zset a b
zcard zset

zscore zset d
zincrby zset 2 a
zincrby zset -1 a

Redis数据类型(String、List、Hash、Set、Sorted Set)_第17张图片

2、zrangebyscore、zremrangebyrank、zremrrangebyscore

2、zrangebyscore		#获取分数满足表达式x <= score <= x的成员
   zremrangebyrank		#删除位置索引满足表达式x <= rank <= x的成员。
   zremrrangebyscore	#删除分数满足表达式x <= score <= x的成员,并返回实际删除的数量。
例:
del zset
zadd zset 1 a 2 b 3 c 4 d 5 e
zrangebyscore zset 2 4
zrangebyscore zset -inf +inf limit 2 3
zremrangebyscore zset 1 3
zrange zset 0 -1
zremrangebyrank zset 1 2	
zrange zset 0 -1

Redis数据类型(String、List、Hash、Set、Sorted Set)_第18张图片

3、zrevrange、zrevrangebyscore、zrevrank

3、zrevrange			#以位置索引从高到低的方式获取并返回此区间内的成员
   zrevrangebyscore		#获取分数满足表达式x >= score >= x 的成员,并以从高到底的顺序输出。
   zrevrank	 			#获取成员索引
例:
del zset
zadd zset 1 a 2 b 3 c 4 d 5 e
zrange zset 0 -1
zrevrange zset 0 -1

zrevrank zset a
zrank zset a
zrevrangebyscore zset 5 3
zrevrangebyscore zset 3 1 limit 1 2

Redis数据类型(String、List、Hash、Set、Sorted Set)_第19张图片

你可能感兴趣的:(Linux-CentOS7,redis,数据库,运维,服务器,centos)