Redis之数据库

1. SELECT: 切换到指定数据库

  • Redis启动时会创建16个数据库,默认在0号数据库
  • 同一个数据库下不允许有两个同名的键,但是不同的数据库下可以

SELECT index: 切换到index号数据库(0=<index<=15)

127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> SELECT 0
OK
127.0.0.1:6379> SELECT 3
OK

2. KEYS:获取所有与给定匹配符相匹配的键

KEYS pattern: 找出当前数据库下和匹配符匹配的所有键

127.0.0.1:6379> KEYS *   # 匹配所有的键
 1) "bitmap"
 2) "myzset"
 3) "strenm"
 4) "3500"
 5) "\xe5\xa7\x93\xe5\x90\x8d

127.0.0.1:6379> KEYS s*  # 匹配所有以s开头的键
1) "strenm"
2) "s1"
3) "str"
4) "stren"
5) "set4"
  • 匹配符的写法满足正则表达式的要求
  • *: 匹配0个或多个任意字符
  • ?: 匹配任意单个字符
  • []: 匹配括号中给出的字符

3. SCAN:以渐进方式迭代数据库中的键

1. 示例:

127.0.0.1:6379> scan 0
1) "17"
2)  1) "bitmap"
    2) "\xe5\xa7\x93\xe5\x90\x8d1"
    3) "uname"
    4) "vm3"
    5) "name"
    6) "vm2"
    7) "salary"
    8) "or_result"
    9) "myzset"
   10) "strenm"
127.0.0.1:6379> scan 17
1) "23"
2)  1) "xor_result"
    2) "set4"
    3) "3500"
    4) "s1"
    5) "str"
    6) "a"
    7) "cNGA3K"
    8) "mutilStus"
    9) "salary1"
   10) "\xe5\xa7\x93\xe5\x90\x8d"
127.0.0.1:6379> scan 23
1) "0"
2) 1) "num"
   2) "GEhG3x"
   3) "and_result"
   4) "stren"
   5) "111"
127.0.0.1:6379> scan 0
1) "17"
2)  1) "bitmap"
    2) "\xe5\xa7\x93\xe5\x90\x8d1"
    3) "uname"
    4) "vm3"
    5) "name"
    6) "vm2"
    7) "salary"
    8) "or_result"
    9) "myzset"
   10) "strenm"

返回结果:

- 第一个元素是进行下一次迭代所需的游标,如果这个游标为0,那么说明客户端已经对数据库完成了一次完整的迭代
- 第二个元素是一个列表,这个列表包含了本次迭代取得的数据库键;如果SCAN命令在某次迭代中没有获取到任何键,那么这个元素将是一个空列表

2. 迭代与给定匹配符相匹配的键

127.0.0.1:6379> SCAN 0 MATCH s*  # 迭代以s开头的键
1) "17"
2) 1) "salary"
   2) "strenm"
127.0.0.1:6379> SCAN 17 MATCH s*
1) "23"
2) 1) "set4"
   2) "s1"
   3) "str"
   4) "salary1"
127.0.0.1:6379> SCAN 23 MATCH s*
1) "0"
2) 1) "stren"

3. 指定返回键的期望数量

127.0.0.1:6379> SCAN 0 COUNT 5  # 每次迭代返回5个
1) "28"
2) 1) "bitmap"
   2) "\xe5\xa7\x93\xe5\x90\x8d1"
   3) "uname"
   4) "vm3"
   5) "name"
127.0.0.1:6379> SCAN 28 COUNT 5
1) "17"
2) 1) "vm2"
   2) "salary"
   3) "or_result"
   4) "myzset"
   5) "strenm"

4. 数据结构迭代命令

1. 散列迭代命令
	`HSCAN hash cursor [MATCH pattern] [COUNT number]`
2. 集合迭代命令
	`SSCAN set cursor [MATCH pattern] [COUNT number]`
3. 有序集合迭代命令
	`ZSCAN sorted_set cursor [MATCH pattern] [COUNT number]`

4 . RANDOMKEY:随机返回一个键

127.0.0.1:6379> RANDOMKEY
"salary1"
127.0.0.1:6379> RANDOMKEY
"\xe5\xa7\x93\xe5\x90\x8d1"
127.0.0.1:6379> RANDOMKEY
"set4"

5. SORT:对键的值进行排序

1. 示例:

127.0.0.1:6379> SMEMBERS set1
1) "3.14"
2) "1024"
3) "123456"
4) "888"
5) "10086"
6) "256"
127.0.0.1:6379> SORT set1
1) "3.14"
2) "256"
3) "888"
4) "1024"
5) "10086"
6) "123456"

2. 指定排序方式
SORT set [ASC|DESC] : ASC表示升序,DESC表示降序

127.0.0.1:6379> SORT set1 ASC
1) "3.14"
2) "256"
3) "888"
4) "1024"
5) "10086"
6) "123456"
127.0.0.1:6379> SORT set1 DESC
1) "123456"
2) "10086"
3) "1024"
4) "888"
5) "256"
6) "3.14"

3. 对字符串值进行排序

127.0.0.1:6379> SMEMBERS fruits
1) "dragon fruit"
2) "apple"
3) "banaba"
4) "watermelon"
5) "cherry"
6) "mango"

127.0.0.1:6379> SORT fruits ALPHA  # 指定排序方式为ALPHA
1) "apple"
2) "banaba"
3) "cherry"
4) "dragon fruit"
5) "mango"
6) "watermelon"

4. 获取排序的部分结果

127.0.0.1:6379> SORT fruits ALPHA LIMIT 1 3  # 跳过1个 然后取3个
1) "banaba"
2) "cherry"
3) "dragon fruit"

5. 获取字符串键的值
SORT命令将把被排序的元素与*符号进行替换,构建出一个键名,然后使用GET命令去获取该键的值

127.0.0.1:6379> KEYS *price  #存在的键
1) "mango-price"
2) "cherry-price"
3) "banaba-price"
4) "watermelon-price"
5) "apple-price"
6) "dragon fruit-price"
127.0.0.1:6379> SMEMBERS fruits  # fruits集合
1) "dragon fruit"
2) "apple"
3) "banaba"
4) "watermelon"
5) "cherry"
6) "mango"

127.0.0.1:6379> SORT fruits ALPHA GET *-price
1) "8.5"  # apple-price
2) "4.5"  # banaba-price
3) "7"
4) "6"
5) "5"
6) "3.5"

6. 获取散列中的键值

存在集合:

127.0.0.1:6379> SMEMBERS fruits
1) "dragon fruit"
2) "apple"
3) "banaba"
4) "watermelon"
5) "cherry"
6) "mango"

存在散列:
在这里插入图片描述

127.0.0.1:6379> SORT fruits ALPHA GET *-info->inventory
1) "1000"
2) "300"
3) "50"
4) "500"
5) "250"
6) "324"

7. 获取被排序元素本身

# 不仅返回散列中的inventory值 也返回被排序的元素
127.0.0.1:6379> SORT fruits ALPHA GET # GET *-info->inventory
 1) "apple"
 2) "1000"
 3) "banaba"
 4) "300"
 5) "cherry"
 6) "50"
 7) "dragon fruit"
 8) "500"
 9) "mango"
10) "250"
11) "watermelon"
12) "324"

8. 使用外部键的值作为排序权重

# 根据水果的价格对fruits集合进行排序
127.0.0.1:6379> SORT fruits BY *-price GET # GET *-price
 1) "watermelon"
 2) "3.5"
 3) "banaba"
 4) "4.5"
 5) "mango"
 6) "5"
 7) "dragon fruit"
 8) "6"
 9) "cherry"
10) "7"
11) "apple"
12) "8.5"

9. 保存排序结果
SORT key [STORE destination]: 将排序结果存储在列表destination中

127.0.0.1:6379> SORT fruits ALPHA STORE sorted_fruits
(integer) 6
127.0.0.1:6379> LRANGE sorted_fruits 0 -1
1) "apple"
2) "banaba"
3) "cherry"
4) "dragon fruit"
5) "mango"
6) "watermelon"

6. EXISTS:检查给定键是否存在

返回存在的给定键数量作为返回值

127.0.0.1:6379> EXISTS s1 set4 as2
(integer) 2

7. DBSIZE:获取数据库包含的键值对数量

127.0.0.1:6379> DBSIZE
(integer) 40

8. TYPE:查看键的类型

127.0.0.1:6379> TYPE fruits
set
127.0.0.1:6379> TYPE num
string

在这里插入图片描述


9. RENAME、RENAMENX:修改键名

# 新键msg2不存在
127.0.0.1:6379> set msg "hello"
OK
127.0.0.1:6379> GET msg2
(nil)
127.0.0.1:6379> RENAME msg msg2
OK
127.0.0.1:6379> GET msg
(nil)
127.0.0.1:6379> GET msg2
"hello"

# 新键msg3存在  会先删除msg3 再执行改名操作
127.0.0.1:6379> SET msg3 "hi"
OK
127.0.0.1:6379> RENAME msg2 msg3
OK
127.0.0.1:6379> GET msg2
(nil)
127.0.0.1:6379> GET msg3
"hello"

# 只有新键不存在时才能修改成功
127.0.0.1:6379> SET msg4 123
OK
127.0.0.1:6379> RENAMENX msg3 msg4   
(integer) 0
127.0.0.1:6379> RENAMENX msg3 msg1
(integer) 1

10. MOVE:将给定的键移动到另一个数据库

127.0.0.1:6379> MOVE msg1 1
(integer) 1
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> GET msg1
"hello"
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> GET msg1
(nil)
127.0.0.1:6379> SET msg1 "123"
OK
127.0.0.1:6379> MOVE msg1 1
(integer) 0

如果给定键并不存在于当前数据库,或者目标数据库中存在与给定键同名的键,那么MOVE命令将不做动作,只返回0表示移动失败


11. DEL:移除指定的键

删除给定的一个或多个键

127.0.0.1:6379> DEL set4 a num
(integer) 3

12. UNLINK:以异步方式移除指定的键

  • DEL命令会以同步方式执行移除操作,所以如果待移除的键非常庞大或者数量众多,那么服务器在执行移除操作的过程中就有可能被阻塞
  • UNLINK命令去移除一个数据库键时,UNLINK只会在数据库中移除对该键的引用(reference),而对键的实际移除操作则会交给后台线程执行,因此UNLINK命令将不会造成服务器阻塞
127.0.0.1:6379> UNLINK uname s1 msg4
(integer) 3

13. FLUSHDB:清空当前数据库

127.0.0.1:6379> FLUSHDB
OK

14. SWAPDB:互换数据库

127.0.0.1:6379> KEYS *
1) "s1"
2) "s2"
127.0.0.1:6379> SWAPDB 0 1
OK
127.0.0.1:6379> KEYS *
1) "msg1"
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> KEYS *
1) "s1"
2) "s2"

参考书籍:《Redis使用手册》 黄健宏

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CodePanda@GPF

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

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

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

打赏作者

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

抵扣说明:

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

余额充值