redis五种基本数据类型

x33g5p2x  于2021-10-04 转载在 Redis  
字(3.9k)|赞(0)|评价(0)|浏览(507)

事实上,redis中所有的key都是字符串,所以这里说的五种基本数据类型都是针对于value而言

一、String

1.启动redis,并且通过cli进入到redis,123为安装redis时设置的密码

redis-server redis.conf
redis-cli -a 123

2.常用的基本命令
1)set,给一个key赋值,key不存在会新增key,key如果已存在,则新的value会覆盖原有的value

set k1 hello

2)get ,根据key获取value

get k1

3)append,使用append时,如果key已经存在,则在原来的value上追加值,否则就创建新的键值对

append k1 yl
append k1 nic

4)decr,对value进行减一,前提value是一个数字,如果value不是数值,则会报错,如果value不存在,则会给value一个默认值为0,再减一

decr k1

5)decrby,用法和decr类似,但是decrby可以加上步长

decrby 5

6)getrange,用来获取value的子串,第一个参数:索引开始从1开始,第二个参数:-1表示最后一个元素,-2表示倒数第二个元素

getrange k1 5 -1

7)getset,获取并更新某一个key对应的值

getset k2 100
get k2

8)incr,给某一个key的value自增

incr k2

9)incrby,给某一个key的value自增,同时可以设置步长

incrby k2 100

9)incrbyfloat,和incrby用法类似,可以增加浮点数

incrbyfloat k2 0.5

10)meget,批量获取

mget k1 k2

11)mset,批量设置

mset k1 java k2 vue k3 js k4 springboot k5 docker

12)ttl,查看key的有效期,-1代表未过期,-2代表已过期

ttl k1

13)setex,设置过期时间,单位为秒

setex k1 5 hello

14)psetex,和setex类似,但是其单位为毫秒

psetex k2 3000 vue

15)setnx,默认情况下set命令会覆盖已经存在的key,setnx则不会

setnx k3 springcloud

16)msetnx,批量设置,如果有一个key存在,那么整个插入操作都会失败

msetnx k5 vue k6 java

17)setrange,覆盖一个已经存在的key的value,0代表偏移量

setrange k3 0 111

18)strlen,查看字符串长度

strlen k3

3.BIT命令,在redis中,字符串都是以二进制的形式存储的,例如 set k1 a,a对应的ACII码为97,转为二进制为01100001,BIT相关的命令就是对二进制进行操作的

1)getbit,获取key对应的value在offset处的bit值

2)setbit,修改key对应的value在offset处的bit值

3)bitcount,统计二进制中1的个数

bitcount k1

也可以统计指定长度的字符串中转换为二进制时1的个数

bitcount k1 0 3

4)setbit peter,使用场景:统计某个网站用户的访问个数,每增加一个用户,就成为101 1,102 1,103 1…

setbit peter 100 1

5)bitop,对key进行二进制运算,与,或,异或等

二、List

特点:可以存储重复的元素,有序!!!
1.常用命令
1)lpush,将value的值从左到右依次插入表头位置,类似于栈,先插入的元素,在底部

lpush k1 java springboot vue js

2)lrange,返回列表指定区间内的元素

3)rpush,用法和lpush类似,但是rpush是将value的值从右到左依次插入表头位置

rpush k2 java springboot vue js

4)rpop,移除并返回列表的尾元素

5)lpop,移除并返回列表的头元素

6)lindex,返回下表为index的元素

lindex k1 0

7)ltrim,可以对一个列表进行修剪,参数为开始索引位置和结束索引位置

ltrim k1 0 1

8)blpop,阻塞式弹出,相当于lpop的阻塞版,当list中没有元素时,会进入阻塞状态,可以设置一个时间,单位为秒

blpop k1 60

三、Hash

特点:在hash结构中,key是字符串,value是key-value键值对
1.常用命令
1)hset,添加值

hset k1 name yl
hset k2 age 19

2)hget,获取值

hget k1 name
hget k2 age

3)hmset,批量设置

hmset k3 name yl age 20 sex female

4)hget,批量获取

hmget k3 name age sex

5)hdel,删除一个指定的field

hdel k3 sex

6)hsetnx,默认情况下,如果key和yeild相同,会覆盖掉已有的value,而hsetnx不会

hsetnx k2 age 100

7)hvals,获取所有的value

hvals k3

8)hkeys,获取所有的key

hkeys k3

9)hgetall,同时获取所有的key和value

hgetall k3

10)hexists,返回field是否存在,返回1代表存在,返回0代表不存在

hexists k3 name
hexists k3 sex

11)hincrby,指定value自增,可以指定步长

hincrby k3 age 3

12)hincrbyfloat,指定value自增,可以增加浮点数

hincrbyfloat k3 age 1.5

13)hlen,返回一个key中对应的value数量

hlen k3

14)hstrlen,返回某一个key的某一个个field的字段

hstrlen k3 name

四、Set

特点:不可以存储重复的元素,无序!!!
1.常用命令
1)sadd,添加元素

sadd k1 a a a b

2)smembers,查看某个key对应的元素

smembers k1

3)srem,移除某个指定的元素

srem k1 a

4)sismember,返回某一个成员是否在集合中,返回1代表存在,返回0代表不存在

sismember k1 a
sismember k1 b

5)scard,返回集合的大小

scard k1

6)srandmember,随机返回集合中的元素,可以加一个参数,指定随机返回多少个

srandmember k1

7)spop,随机返回并且出栈一个元素

spop k1

8)smove,把一个集合的元素移到另一个集合中

smove k1 k2 d

9)sdiff,返回两个集合的差值,集合元素多的在前面,大减去小

sdiff k2 k1

10)sinter,返回两个集合的交集

sinter k1 k2

11)sdiffstore,用法和sdiff类似,但是它会将结果保存到一个新的集合中

sdiffstore k3 k2 k1

12)sinterstore,用法和sinter类似,但是sinterstore会将结果保存到新的集合中

sinterstore k4 k1 k2

13)sunion,求并集

sunion k1 k2

14)sunionstore,求并集并且将结果存到新的集合中

sunionstore k5 k1 k2

五、ZSet

特点:不可以存储重复的数据,但它是有序的!!!
1.常用命令
1)zadd,将指定的元素添加到有序集合中,50,60为score(作用就是排序!小的排在前面),v1,v3这些代表member

zadd k1 50 v1 60 v3 70 v4 40 v5

2)zscore,返回member的score值

zscore k1 v1

3)zrange,返回集合中的一组元素

zrange k1 0 3

也可以携带着score返回

4)zrevrange,返回集合中的一组元素,但是是倒叙返回

zrevrange k1 0 3

5)zcard,返回集合大小

zcard k1

6)zcount,返回score在某一个区间之内的元素个数,默认是闭区间,可以加上),就代表着开区间了

zcount k1 40 90
zcount k1 (40 90
zcount k1 (40 (90

7)zrangebyscore,按照score的范围返回元素

zrangebyscore k1 60 70

8)zrank,返回元素的排名,从小到大

zrank k1 v3

9)zrevrank,返回元素的排名,从大到小

zrevrank k1 v1

10)zincrby,score自增

zincrby k1 5 v4

11)zinterstore,求两个集合的交集,并且将结果存到一个新集合中,注意:score也会相加,zinterstore k3 2 k1 k2,参数2代表要操作多少个集合

zinterstore k3 2 k1 k2

12)zrem,弹出一个元素

zrem k1 v1

13)zlexcount,计算成员数量,-代表最小,+代表最大,也可以指定memeber的一个区间范围

zlexcount k1 - +

14)zrangebylex,返回指定区间的成员

zrangebylex k1 - +

六、操作key的命令

1.del,删除一个key-value

del k1
del k2

2.dump,序列化指定的key

set k1 hellojava
dump k1

3.exists,判断某个key是否存在

exists k1

4.ttl,查看某个key的有效期,单位为秒

ttl k1

5.expire,设置某个key的有效期,注意:当重新set值时,有效期会失效!

expire k1 10

6.pttl,查看某个key的有效期,单位为毫秒

pttl k1

7.persist,移除某一个key的过期时间

persist k1

8.key /* ,查看所有的key

key *
key k*

相关文章

微信公众号

最新文章

更多