Redis常用指令


redis命令学习网站:http://doc.redisfans.com/index.html

下面介绍几种常用的。

1. 🍁String 类型

赋值语法:set key value

192.168.249.166:6379> set k1 zhangsan 
OK

取值语法: getkey

192.168.249.166:6379> get k1
"zhangsan"

设置多个键语法: mset key value [key value …]

192.168.249.166:6379> mset k2 lisi k3 wangwu
OK

获取多个键值语法: mget key [key …]

192.168.249.166:6379> mget k2 k3
1) "lisi"
2) "wangwu"

删除语法:del key

192.168.249.166:6379> del k3
(integer) 1
192.168.249.166:6379>  get k3
(nil)
192.168.249.166:6379> 

2. 🍁字符串数字的递增与递减

递增数字:当存储的字符串是整数时,Redis提供了一个实用的命令INCR,其作用是让当前键值递增,并返回递增 后的值。

语法:
递增数字语法: incr key 
递减数值语法: decr key 
增加指定的整数语法: incrby key 整数
减少指定的整数 语法:decrby key 整数

递增

192.168.249.166:6379> incr num
(integer) 1
192.168.249.166:6379> incr num
(integer) 2
192.168.249.166:6379> incr num
(integer) 3

递减

192.168.249.166:6379> decr num
(integer) 2
192.168.249.166:6379> decr num
(integer) 1
192.168.249.166:6379> decr num
(integer) 0

指定步长:(了解)

192.168.249.166:6379> incrby num 5
(integer) 5
192.168.249.166:6379> incrby num 5
(integer) 10
192.168.249.166:6379> incrby num 5
(integer) 15
192.168.249.166:6379> decrby num 5
(integer) 10
192.168.249.166:6379> decrby num 5
(integer) 5

3. 🍁Hash散列(了解)

hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类 型。相当于是对象格式的存储

语法:
赋值语法: hset key name value
取值语法: hget key name
设置多个字段语法: hget key name value [name value ...]
取多个值语法: hget key name [name ...]
获取所有字段值语法:hgetall key

设置一个字段值, HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0。

192.168.249.166:6379> hset user1 username zhangsan
(integer) 1
192.168.249.166:6379> hset user1 username lisi
(integer) 0
192.168.249.166:6379> hget user1 username
"lisi"

user1存 password 123 和 age 20。

192.168.249.166:6379> hmset user1 password 123 age 20
OK

同时取password 和 age。

192.168.249.166:6379> hmget user1 password age
1) "123"
2) "20"

获取所有字段值。

192.168.249.166:6379> hgetall user1
1) "username"
2) "lisi"
3) "password"
4) "123"
5) "age"
6) "20"

删除username:

192.168.249.166:6379> hdel user1 username
(integer) 1
192.168.249.166:6379> hgetall user1
1) "password"
2) "123"
3) "age"
4) "20"

可以支持部分修改。

4. 🍁队列List

​ Redis的list是采用来链表来存储,双向链表存储数据,特点:增删快、查询慢(Linkedlist).这个队列是有序的。

语法:
向列表左边增加元素: LPUSH key value [value ...] 
从列表左边弹出元素: LPOP key(临时存储,弹出后,从队列中清除)
向列表右边增加元素 : RPUSH key value [value ...] 
从列表右边弹出元素: RPOP key
获取列表中元素的个数: LLEN key
查看列表语法:LRANGE key start stop

左增左出

192.168.249.166:6379> lpush alist a1 a2 123
(integer) 3
192.168.249.166:6379> lpop alist
"123"
192.168.249.166:6379> lpop alist
"a2"

右增右出

192.168.249.166:6379> rpush blist a1 a2 345
(integer) 3
192.168.249.166:6379> rpop blist
"345"

获取列表中元素的个数

192.168.249.166:6379> llen blist
(integer) 2

查看blist列表0-4范围的内容。

192.168.249.166:6379> lrange blist 0 4
1) "a1"
2) "a2"

将返回start、stop之间的所有元素(包含两端的元素),索引从0开始,可以是负数,如:“-1”代表最后的一个元 素。

示例: LPUSH comment1 id 1 name ‘goods’ date 1430295077289

192.168.249.166:6379> LPUSH comment1 id 1 name 'goods' date 1430295077289
(integer) 6
192.168.249.166:6379> lrange comment1 0 -1
1) "1430295077289"
2) "date"
3) "goods"
4) "name"
5) "1"
6) "id"

临时存储。先进先出。使用双向链表:

1.左边进,右边去

192.168.249.166:6379> lpush stulist stu1
(integer) 1
192.168.249.166:6379> lpush stulist stu2
(integer) 2
192.168.249.166:6379> lpush stulist stu3
(integer) 3
192.168.249.166:6379> lpush stulist stu4
(integer) 4
192.168.249.166:6379> rpop stulist
"stu1"
192.168.249.166:6379> rpop stulist
"stu2"
192.168.249.166:6379> rpop stulist
"stu3"

2.右边进,左边去。

192.168.249.166:6379> rpush clist stu1
(integer) 1
192.168.249.166:6379> rpush clist stu2
(integer) 2
192.168.249.166:6379> rpush clist stu3
(integer) 3
192.168.249.166:6379> lpop clist
"stu1"
192.168.249.166:6379> lpop clist
"stu2"
192.168.249.166:6379> lpop clist
"stu3"

5. 🍁Set集合

Set集合类型:无序、不可重复

语法:
增加元素语法:sadd key member [member ...] 
删除元素语法: srem key member [member ...] 
获得集合中的所有元素 : smembers key 
判断元素是否在集合中: sismembers key member

增加案例:相同值不可重复存,返回0

192.168.249.166:6379> sadd setlist1 user1
(integer) 1
192.168.249.166:6379> sadd setlist1 user2
(integer) 1
192.168.249.166:6379> sadd setlist1 user2
(integer) 0
192.168.249.166:6379> sadd setlist1 user3
(integer) 1

获取所有集合案例:

192.168.249.166:6379> smembers setlist1
1) "user1"
2) "user3"
3) "user2"

删除案例:

192.168.249.166:6379> srem setlist1 user1
(integer) 1
192.168.249.166:6379> smembers setlist1
1) "user3"
2) "user2"

判断元素是否在集合中:

192.168.249.166:6379> sismember setlist1 user1
(integer) 0
192.168.249.166:6379> sismember setlist1 user2
(integer) 1

6. 🍁 Zset有序集合(了解)

​ Sortedset又叫zset,是有序集合,可排序的,但是唯一。 Sortedset和set的不同之处,是会给set中的元素添加一个 分数,然后通过这个分数进行排序。

语法:
增加元素:ZADD key score member [score member ...](将一个或多个 member 元素及其 score 值加入到有序集 key 当中。)
排名语法:ZREVRANGE key start stop [WITHSCORES]
获取元素的分数 :ZSCORE key member
删除元素:ZREM key member [member ...]
增量或减量:ZINCRBY key increment member(为有序集key的成员member的score值加上增量increment,正数为增,负数为减)

例如:向有序集合中加入一个元素和该元素的分数(score),如果该元素已经存在则会用新的分数替换原有的分数。 初存数据:stu1:20,stu2:30,stu3:40,后存数据:stu1:20,stu2:30,stu3:10,

#初存数据
192.168.249.166:6379> zadd num1 20 stu1 30 stu2 40 stu3
(integer) 3
#排序
192.168.249.166:6379> zrevrange num1 0 4 withscores
1) "stu3"
2) "40"
3) "stu2"
4) "30"
5) "stu1"
6) "20"
#后存数据
192.168.249.166:6379> zadd num1 20 stu1 30 stu2 10 stu3
(integer) 0
#排序
192.168.249.166:6379> zrevrange num1 0 4 withscores
1) "stu2"
2) "30"
3) "stu1"
4) "20"
5) "stu3"
6) "10"

获取元素的分数 :

192.168.249.166:6379> zscore num1 stu1
"20"

获取排名0-4:

withscores参数是获取元素的分数。

192.168.249.166:6379> zrevrange num1 0 4 
1) "stu2"
2) "stu1"
3) "stu3"
192.168.249.166:6379> zrevrange num1 0 4 withscores
1) "stu2"
2) "30"
3) "stu1"
4) "20"
5) "stu3"
6) "10"

删除元素:

249.166:6379> zrem num1 stu2
(integer) 1
192.168.249.166:6379> zrevrange num1 0 4
1) "stu1"
2) "stu3"
192.168.24

给某一个属性加分数或减分,减分时使用负数:

192.168.249.166:6379>  zincrby num1 2 stu1
"22"
192.168.249.166:6379>  zincrby num1 2 stu1
"24"
192.168.249.166:6379>  zincrby num1 -2 stu1
"22"
192.168.249.166:6379>  zincrby num1 -2 stu1
"20"

应用场景:商品销售量;学生排名等

示例一:

创建商品编号和销量:6 1001,9 1002,15 1003

192.168.249.166:6379> ZADD sellsort 6 1001 9 1002 15 1003
(integer) 3

商品销量排序队列中前3名:

92.168.249.166:6379> zrevrange sellsort 0 2 withscores
1) "1003"
2) "15"
3) "1002"
4) "9"
5) "1001"
6) "6"

7. 🍁 HyoperLogLog命令

      HyperLogLog是一种使用随机化的算法,以少量内存提供集合中唯一元素数量的近似值。

HyperLogLog 可以接受多个元素作为输入,并给出输入元素的基数估算值:

      基数:集合中不同元素的数量。比如 {‘apple’, ‘banana’, ‘cherry’, ‘banana’, ‘apple’} 的基数就是 3 。
      估算值:算法给出的基数并不是精确的,可能会比实际稍微多一些或者稍微少一些,但会控制在合理的范围 之内。 HyperLogLog 的优点是,即使输入元素的数量或者体积非常非常大,计算基数所需的空间总是固定的、并且是很 小的。

      在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。这和计 算基数时,元素越多耗费内存就越多的集合形成鲜明对比。 但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像 集合那样,返回输入的各个元素。

HyperLogLog 相关的一些基本命令。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4JHb2o5L-1649169113655)(redis笔记.assets/image-20220403193111159.png)]

示例:

redis 127.0.0.1:6379> PFADD mykey "redis" 
1) (integer) 1 
redis 127.0.0.1:6379> PFADD mykey "java" 
1) (integer) 1 
redis 127.0.0.1:6379> PFADD mykey "mysql" 
1) (integer) 1 
redis 127.0.0.1:6379> PFCOUNT mykey 
(integer) 3

8. 🍁 其他命令

(1) keys返回满足给定pattern 的所有key

keys user* //查询以user开头的key 
keys * //查询所有的key 

(2) exists确认一个key 是否存在,存在返回1

127.0.0.1:6379> exists num2 //语法:exists key 
(integer) 1 
127.0.0.1:6379> exists num23 
(integer) 0 

(3) del删除一个key

127.0.0.1:6379> del num1 //语法: del key 删除存在的key返回1,不存在的key返回0 
(integer) 1 
127.0.0.1:6379> del num23 
(integer) 0 

(4) rename重命名key:rename oldkey newkey

127.0.0.1:6379> rename k1 k11 
OK
127.0.0.1:6379> keys * 
1) "ulist" 
2) "k2" 
3) "user1" 
4) "num2" 
5) "clist" 
6) "k11" 

(5) type返回值的类型: type key

127.0.0.1:6379> type ulist 
set 
127.0.0.1:6379> type k11 
string 
127.0.0.1:6379> type alist 
list 

      设置key的生存时间:缓存的数据一般都是需要设置生存时间的,即:到期后数据销毁。

(6) EXPIRE key seconds

设置key的生存时间(单位:秒)key在多少秒后会自动删除

TTL key 查看key剩余的生存时间

PERSIST key 清除生存时间

127.0.0.1:6379> set a1 123 
OK
127.0.0.1:6379> get a1 
"123" 
127.0.0.1:6379> expire a1 60 
(integer) 1 
127.0.0.1:6379> ttl a1 
(integer) 56 
127.0.0.1:6379> ttl a1 
(integer) 51 
127.0.0.1:6379> ttl a1 
(integer) 47 

(7) 获取服务器信息和统计:info

(8) 删除当前选择数据库中的所有key:flflushdb

(9) 删除所有数据库中的所有key:flflushall

9. 🍁Redis的多数据库

      一个redis实例key包括多个数据库,客户端可以指定连接某个redis实例的哪个数据库,就好比一个mysql中创建多 个数据库,客户端连接时指定连接哪个数据库。

      一个redis实例最多可提供16个数据库,下标从0-15,客户端默认连接第0号数据库,也可以通过select选择连接哪 个数据库,如下连接1号库:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-diiLTvM9-1649169113659)(redis笔记.assets/image-20220403193421199.png)]

切换至0数据库下面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RHxALMdI-1649169113660)(redis笔记.assets/image-20220403193432023.png)]

将key的数据移动到1号数据库: move key 数据库编号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JOqYOjId-1649169113661)(redis笔记.assets/image-20220403193443483.png)]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小满@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值