Redis数据类型

Redis数据类型

一、String数据类型

概述

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

1.set / get / append / strlen

set key value  #存放数据
get key value  #获取数据
append key value   #Redis的append命令是往一个key追加value。如果没有key,则创建一个并且设置value
strlen key     #获取指定Key的字符长度

举例

exists test
append test "hello"
append test " world"
get test
set test 123456789
get test
strlen test

Redis数据类型

2.incr / decr / incrby / decrby

incr key	#该Key的值递增1
decr key 	#该Key的值递减1
incrby key increment	#增加指定的整数
decrby key increment    #减少指定的整数

举例

exists number
incr number
incr number
decr number
incrby number 10
decrby number -20
decrby number 20
get number


set number hello
get number
incr number

Redis数据类型

3.getset

getset key value #获取计数器原有值的同时,并将其设置为新值,这两个操作原子性的同时完成

举例

set test2 10
getset test2 0
get test2

Redis数据类型

4.setex

setex key seconds value  #设置指定Key的过期时间为xx秒
ttl key     #查看键的剩余存活时间

举例

setex test2 10 'hello'
ttl test2
get test2
等待10s
get test2
ttl test2
set test2 'hello'
ttl test2

Redis数据类型

5.setnx

setnx key value #创建指定键,若该键存在则不执行,不存在则执行

举例

exists test3
setnx test3 "zhangsan"
setnx test3 "lisi"
get test3

Redis数据类型

6.mset / mget / msetnx

mset key value		#批量设置键的值
mget key		    #批量获取键的值
msetnx key value	#批量设置键值,若有存在的键则不执行

举例

mset k1 111 k2 222
mget k1 k2
msetnx k3 333 k4 444
mget k3 k4
msetnx k4 1234 k5 555
mget k4 k5

Redis数据类型

二、List数据类型

概述

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

1.lpush / lpushx / lrange

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

举例

lpush letter a b c d
lrange letter 0 -1
lrange letter 1 2
lpushx letter2 e
lrange letter2 0 -1
lpushx letter e
lrange letter 0 -1

Redis数据类型

2.lpop / llen

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

举例

del letter
lpush letter a b c d
lrange letter 0 -1
lpop letter
lpop letter
lrange letter 0 -1
llen letter

Redis数据类型

3.lrem / lset / lindex / ltrim

lrem key count value	#从头部(left)向尾部(right)变量链表,删除2个值等于a的元素,返回值为实际删除的数量
lset key index value    #将索引值为xxx的元素值设置为新值xxx
lindex key index    	#获取索引值为xxx的元素值。
ltrim key start stop	#仅保留索引值xxx到xxx的元素

举例

del letter
lpush letter a b c d a c
lrange letter 0 -1
lrem letter 2 a
lrange letter 0 -1
lindex letter 1
lset letter 1 e
lindex letter 1
lindex letter 6
lset letter 6 h
ltrim letter 0 2
lrange letter 0 -1

Redis数据类型

4.linsert

linsert key BEFORE|AFTER pivot value	#在键的xxx元素前|后插入新元素元素

举例

del letter
lpush letter a b c d e
lrange letter 0 -1
linsert letter before a 1
lrange letter 0 -1
linsert letter after e f
lrange letter 0 -1
linsert letter after g k
linsert letter1 after a b

Redis数据类型
Redis数据类型

5、rpush / rpushx / rpop / rpoplpush

rpush key value		#将值从左往右依次插入到表尾
rpushx key value	#指定键存在时执行,否则不执行
rpop key		    #移除并返回键的第一个元素,从尾开始
rpoplpush source destination	#将键1尾部元素xxx弹出,同时再插入到键2的头部(原子性的完成这两步操作)

举例

del letter
rpush letter a b c d e
lrange letter 0 -1

rpushx letter f
lrange letter 0 -1
rpushx letter2 f

lrange letter 0 -1
rpop letter
lrange letter 0 -1
rpoplpush letter letter2
lrange letter 0 -1
lrange letter2 0 -1
rpoplpush letter letter
lrange letter 0 -1

Redis数据类型
Redis数据类型

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

概述

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

1.hset / hget / hdel / hexists / hlen / hsetnx

hset key field value     #给xxx键设置字段为xxx,值为xxx
hget key field		     #获取xxx键,字段为xxx的值
hdel key field		     #删除xxx键的xxx字段,成功返回1
hexists key field	     #判断xxx键中的xxx字段是否存在,存在返回1
hlen key		         #获取xxx键的字段数量
hsetnx key field value	 #给xxx键添加新字段,是否执行基于此字段是否存在,不管键是否存在,返回1表示执行成功

举例

hset myhash field1 a field2 b field3 c
hget myhash field1
hdel myhash field2

hexists myhash field2
hexists myhash field1
hlen myhash

hsetnx myhash1 field3 d
hget myhash1 field3
hsetnx myhash field3 d

Redis数据类型

2.hincrby

hincrby key field increment		#给xxx键的xxx字段值加x

举例

HEXISTS myhash2 field1
hincrby myhash2 field1 5
hincrby myhash2 field1 -10
hget myhash2 field1

Redis数据类型

3.hmset / hmget / hgetall / hkeys / hvals

hmset key field value   #批量为xxx键创建字段和赋值
hmget key field		    #获取指定多个字段值
hgetall key		        #返回xxx键的所有字段及其值,是逐对列出的
hkeys key		        #仅获取xxx键中所有字段名
hvals key		        #仅获取xxx键中所有字段值

举例

hmset myhash3 field1 hello field2 world
hmget myhash3 field1 field2 field3
hgetall myhash3
hkeys myhash3
hvals myhash3

Redis数据类型

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

概述

无序集合,元素类型为String类型,元素具有唯一性,不允许存在重复的成员。多个集合类型之间可以进行并集、交集和差集运算。

应用范围

(1)可以使用Redis的Set数据类型跟踪一些唯一性数据,比如访问某一博客的唯一IP地址信息。对于此场景,我们仅需在每次访问该博客时将访问者的IP存入Redis中,Set数据类型会自动保证IP地址的唯一性。

(2)充分利用Set类型的服务端聚合操作方便、高效的特性,可以用于维护数据对象之间的关联关系。比如所有购买某一电子设备的客户ID被存储在一个指定的Set中,而购买另外一种电子产品的客户ID被存储在另外一个Set中,如果此时我们想获取有哪些客户同时购买了这两种商品时,Set的intersections命令就可以充分发挥它的方便和效率的优势了。

1.sadd / smembers / scard / sismember

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

举例

sadd myset a b c
sadd myset c d e
smembers myset
scard myset
sismember myset c
sismember myset f

Redis数据类型

2.spop / srem / srandmember / smove

spop key			             #随机的移除并返回键中的某一成员
srem key member1 member1 ...	 #从键中移出member成员,并返回移出成员个数
srandmember key		             #该命令随机的返回某一成员
smove source destination member  #将source的member成员移到destination,成功返回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数据类型

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

概述

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

应用范围

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

(2)Sorted-Set类型还可用于构建索引数据。

1.zadd / zcard / zcount / zrem / zincrby / zscore / zrank

zadd key [NX|XX] [CH] [INCR] score member [score member ...]	#将一个或多个成员元素及其分数值加入到有序集当中
zrange key start stop [withscores]   #查看成员;加withscores可显示成员加分数
zcard key		                #获取键中成员的数量
zcount key min max		        #分数满足表达式x <= score <= x的成员的数量
zrem key member [member ...]	#删除成员xxx、xxx,返回实际删除成员的数量
zincrby key increment member	#成员xxx不存在,zincrby命令将添加该成员并假设其初始分数为0
zscore key member		        #获取成员xxx的分数
zrank key member		        #获取成员xxx的位置索引值

举例

zadd myzset 1 a 2 b 3 c 4 d 5 e
zrange myzset 0 -1
zrange myzset 0 -1 withscores

zrank myzset a
zrank myzset f
zcard myzset
zcount myzset 3 5
zrem myzset d e
zcard myzset

zscore myzset c
zincrby myzset 2 d
zincrby myzset -1 d

Redis数据类型

2.zrangebyscore / zremrangebyrank / zremrrangebyscore

zrangebyscore key min max		#获取分数满足表达式x <= score <= x的成员
zremrangebyrank key start stop	#删除位置索引满足表达式x <= rank <= x的成员。
zremrangebyscore key min max	#删除分数满足表达式x <= score <= x的成员,并返回实际删除的数量。

举例

zadd myzset2 1 a 2 b 3 c 4 d 5 e
zrangebyscore myzset2 2 4
zrangebyscore myzset2 (2 4
zrangebyscore myzset2 -inf +inf limit 2 3
zremrangebyscore myzset2 1 3
zrange myzset2 0 -1
zremrangebyrank myzset2 1 2
zrange myzset2 0 -1

Redis数据类型

3.zrevrange / zrevrangebyscore / zrevrank

zrevrange key start stop [withscores]	#以位置索引从高到低的方式获取并返回此区间内的成员
zrevrangebyscore key max min	#获取分数满足表达式x >= score >= x 的成员,并以从高到底的顺序输出。
zrevrank key member	 		    #获取成员索引

举例

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数据类型

上一篇:1.Python简介


下一篇:JAVA:将数值转化为字母;例:1转化为A;27转化为AA