Redis学习8-数据库管理

数据库管理

数据库操作命令

处理数据库单个键命令

Type 命令返回类型

none              表示key不存在

string             表示字符串或者HyperLoglog(HLL二进制文件)

hash              散列

list                  列表

set                  集合

zset                有序集合


DEL key [key...]

key存在则返回删除数量,key不存在返回0


EXISTS key

检查键是否存在,存在返回1,不存在返回0



修改键的名字

RENAME key newkey  将键的名字从key修改为newkey 如果newkey存在就覆盖

RENAMENX key newkey 如果newkey存在不做变更,如果newkey不存在就修改


对键值进行排序

SORT命令

在Redis中,只有列表和有序集合会按照有序的方式来存储值得。

列表按照被推入的顺序来存储

有序集合按照袁术的分值来排列元素

通过SORT命令,可以对列表、集合、有序集合进行排序。对列表和有序集合,SORT命令可以以其他方式来排列他们的值。

SORT key [By pattern][LIMIT offset count][GET pattern [GET pattern...]][ASC|DESC][ALPHA][STORE destination]

SORT命令提供的可选选项以及参数非常多,他们可以修改SORT命令排序行为。

SORT key

将输入键包含的值解释为浮点数,然后对这些浮点数进行排序


升序排序和降序排列


对文字进行排序,通过给定ALPHA参数,按照基于字典排序


文字排序特别适合用于有序集合


基于外部键的值进行排序

在默认情况下SORT命令在排序时,会使用排序键本身,但通过指定BY pattern选项,可以让SORT使用其他键作为排序权重,并对排序键进行排序


首先基于三个元素本身排序

第二次使用sort命令会先获取到 三个元素,然后将他们带入到*-score模式中,得出键名,然后获取这些键的值来作为排序权重


获取外部键的值作为返回值

SORT命令默认返回被排序键的值作为返回值,但通过给定GET pattern选项,可以让SORT命令返回其他键的值来作为命令返回值


对集合进行排序,得出 默认排序,然后将三个元素带入到模式*-name,得出jack-name、peter-name和tom-name三个键,根据这些键获取值作为排序结果


获取多个外部键的值

调用SORT命令可以给定多个GET选项



给定GET # 时,命令会返回被拍下的值本身


制定返回结果的数量

在默认情况,SORT命令总是返回被排序键的所有值为结果,但通过指定LIIT offset count选项,可以让命令在返回结果钱先跳到offset个值,然后返回count个值

如上例,第一个从0开始返回三个值,第二个跳过开头3个值返回下面3个


存储排序结果

STORE destkey 将结果存储


使用多个选项和参数

127.0.0.1:6379> sort team-member-ids by *-KPI get # get *-name get *-KPI

通过KPI值,对团队中个成员的ID进行排序,然后根据排序结果获取成员id,名字,KPI


127.0.0.1:6379> sort names alpha desc get # get *-id get *-name limit 0 5 store profiles
9
127.0.0.1:6379> lrange profiles 0 8
tom
123321
Thomas Edward
peter
10086
Peter Hanson
jack
255255
Jack Sparrow

对names 键的值进行文字形式的降序排序,然后根据排序的前五个值,获取值本身、对应的id,对应的名字 然后存储到profiles键中


通过命令获取数据库键

返回数据库中与给定模式匹配的键

keys pattern

keys *                     返回数据库中所有的键

keys h?llo               返回匹配h?llo的所有的键比如hello/hxllo等

keys h*llo                返回匹配*表任意个

keys h[ae]llo           返回匹配中间字母a或者e 如hello、hallo但是其他字母不可以


渐进地遍历整个数据库

SCAN 命令

SCAN cursor [MATCH pattern] [COUNT number]


KEYS与SCAN命令的差异

keys一次遍历整个数据库 scan每次遍历数据库中一部分键返回一部分结果

keys可能会阻塞服务器 scan一般不会阻塞服务器

keys不会出现重复值 scan可能会出现重复着

127.0.0.1:6379> scan 0 设置游标为0,开始一次新的遍历
6  返回下次进行遍历的游标
fruits-8-13     返回的键
meng::age
jack-score
fruits-price
message

127.0.0.1:6379> scan 6  使用上次返回的游标继续遍历
9
peter-name
sorted-numbers
new-key

127.0.0.1:6379> scan 9
43
msg
names
meng::email
tom-id

127.0.0.1:6379> scan 43
0 表示遍历已结束
peter-score
profiles
scores

其他渐进遍历命令

SSCAN key cursor [MATCH pattern][COUNT count]

代替可能会阻塞服务器的SMEMBERS命令,遍历集合包含的各个元素

HSCAN key cursor [MATCH pattern][COUNT count]

代理可能会阻塞服务器的HGETALL命令,遍历散列博涵的各个键值对

ZSCAN key cursor [MATCH pattern][COUNT count]

代替可能会阻塞服务器的ZRANGE命令,遍历有序集合包含的各个元素


处理数据库本身

获取数据看大小

DBSIZE 返回数据库包含的键值对数量

127.0.0.1:6379> DBSIZE
34
127.0.0.1:6379> rpush numbers11 1 2 3
3
127.0.0.1:6379> DBSIZE
35

清空当前数据库 删除所有的键值对

FLUSHDB

切换数据库

默认会建15个库,切换数据库使用select db如select 1 切换到数据库1

在数据库之间移动键值

MOVE key target-db

将当前数据库中的key移动到target-db中去,如果key不存在火灾target-db中已经存在同样的键则不会移动

127.0.0.1:6379> dbsize
35

127.0.0.1:6379> select 1
OK

127.0.0.1:6379[1]> dbsize

0

127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> move numbers11 1
1
127.0.0.1:6379> dbsize
34
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> dbsize
1

清空所有数据库

FLUSHALL 清空Redis服务器包含的所有数据库,也就是所有数据库里面的所有的键值对




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值