ITPub博客

首页 > 数据库 > 数据库开发技术 > NoSQL数据库:Redis数据库键值管理技巧1.0

NoSQL数据库:Redis数据库键值管理技巧1.0

原创 数据库开发技术 作者:运维book思议 时间:2023-10-12 17:29:53 0 删除 编辑

先放个链接,万一有人关注呢

优质文章推荐

↓ ↓ ↓ ↓ ↓

CentOS再见!拥抱Rocky or Alma

Linux系统服务巡检脚本

Python脚本实现Zabbix自动微信告警

不会吧!Linux系统磁盘分区只会fdisk吗?

Linux系统不优化的后果有多严重?


简介

通常情况下,关系型数据库可以创建多个数据库存储数据。与关系型数据库类似,Redis则使用多个字典来存储数据。客户端可以将数据存储在指定字典中,每个字典则可以看作一个独立的数据库。

Redis默认支持16个数据库,分别编号为0、1、2、...14、15。Redis每个数据库都以编号命名,不支持自定义数据库名称,因此开发者必须要明确哪个数据库存放了哪些数据。

Redis可以通过配置参数databases修改数据库的数量。

Redis的每个数据库都是独立的,即当开发者在0号数据库中插入数据后,便无法在1号数据库中访问到该数据。

客户端与Redis建立连接后默认选择0号数据库,开发者可通过SELECT命令来更换数据库。例如选择3号数据库。

[root@book ~]# redis-cli 127.0.0.1:6379> SELECT 3OK127.0.0.1:6379[3]>

Redis数据库不仅为数据库的管理提供了简洁的命令,而且针对不同存储结构的键值数据提供了丰富的数据操作命令。

Key:用于管理Redis的键,如创建、查询、删除等

String:用于管理字符串结构键值操作

List:用于管理双向列表类型键值操作

Set:用于管理集合结构键值操作

Hash:用于管理散列结构键值操作

Sorted Sets:用于管理有序集合结构键值操作

Key操作

Redis常用的键操作命令及相关说明

SET:为指定键设置值

MSET:为多个键设置值

KEYS:查找所有符合给定模式pattern(正则表达式)的key列表

GET:获取指定键的值

MGET:获取多个键的对应值

DUMP:序列化指定的键,并返回被序列化的值

EXISTS:检查指定的键是否存在,存在为1,不存在为0

TYPE:返回键所存储的值的类型

RENAME:修改指定键的名称EXPIRE为指定键设置过期时间,以秒计

TTL:返回指定键的剩余生存时间(Time To Live,TTL),以秒为单位

PERSIST:移除键的过期时间,key将持久保持

MOVE:将当前数据库的key移动到指定数据库当中

RANDOMKEY:从当前数据库中,随机返回一个key

DEL:在键存在时,删除key

示例

1.SET
使用SET命令为指定键设置值,语法格式如下所示。
SET key value
上述语法中,SET为键指定值时,当键不存在时,则直接创建key,反之则覆盖已有键值。
【例】为键book指定值Poetics,具体如下所示。
127.0.0.1:6379> SET book PoeticsOK
由上述结果可知,返回OK则表示成功地为键book指定了值Poetics。
2. MSET
使用MSET命令同时为多个键指定值,语法格式如下所示。
MSET key1 value1 key2 value2 …… key[n] value[n]
上述语法中,MSET与SET命令类似,如果键不存在,则直接创建key;当键存在时,则覆盖该键所对应的原值。
【例】为键subject1设置值Cloud Computing,为键subject2设置值python,为键subject3设置HTML5,为键subject4设置Java,具体如下所示。
127.0.0.1:6379> MSET subject1 "Cloud Computing" subject2 "Python" subject3 "HTML5" subject4 "Java"OK
由上述结果可知,已成功使用MSET命令为多个键分别指定值。
3. KEYS
使用KEYS命令查找所有符合指定模式的key,语法格式如下所示。
KEYS PATTERN
上述语法中,KEYS是查找所有符合指定模式key的命令,PATTERN(正则表达式)则是指定的查找条件模式。PATTERN有如下几种情况。
(1) *:可以代替0个、1个或多个真正字符,如a*,匹配的可以是ab、attitude等。
(2) ?:代替一个字符,如a?c,匹配的可以是abc、a2c、aac等。
(3) [ab]:匹配所包含的任意一个字符,如t[ab]e,匹配的可以是tae、tbe。
(4) [^c]:匹配未包含的任意字符,如a[^c]b,匹配的可以是aab、ahb,但是不能是acb。
(5) [a-b]:匹配指定范围内的任意字符,如a[a-b]e,匹配的是aae、abe,[a-b]可以匹配“a”到“b”范围内的任意小写字母字符。
【例】查找所有键,具体如下所示。
127.0.0.1:6379> KEYS *输出结果:1) "subject2"2) "book"3) "subject1"4) "subject4"5) "subject3"
由上述结果可知,0号数据库中一共有5个键。
4. GET
使用GET命令获取指定键的值,语法格式如下所示。
GET key
上述语法中,GET是获取指定键的命令,key是指定键。
【例】获取键book的值,具体如下所示。
127.0.0.1:6379> GET book输出结果:"Poetics"
由上述结果可知,键book的值为Poetics。
5. MGET
使用MGET命令获取多个键的对应值,语法格式如下所示。
MGET key1 key2 ……
【例】获取键subject、键subject1、键subject2、键subject3、键subject4的值,具体如下所示。
127.0.0.1:6379> MGET subject subject1 subject2 subject3 subject4输出结果:1) (nil)2) "Cloud Computing"3) "Python"4) "HTML5"5) "Java"
由上述结果可知,已成功获取到除键subject外的所有键的值,包括subject1,subject2,subject3,subject4。需要注意,由于键subject不存在,所以系统自动返回nil。
6. DUMP
使用DUMP命令序列化给定的key,并返回被序列化的值,语法格式如下所示。
DUMP key
【例】对键book进行序列化操作,并返回被序列化后的值,具体如下所示。
127.0.0.1:6379> DUMP book输出结果:"\x00\aPoetics\n\x00\x89\x99\xd2#=\xc1\x1f\x18"
由上述结果可知,键book已经被序列化,被序列化的值为“\x00\aPoetics\n\x00\x89\x99\xd2#=\xc1\x1f\x18”。
7. EXISTS
使用EXISTS命令检查某个指定的键是否存在,语法格式如下所示。
EXISTS key
上述语法中,EXISTS是检查指定的键是否存在的命令,若存在,则返回1,不存在则返回0。
【例】判断键book和键book1是否存在,具体如下所示。
127.0.0.1:6379> EXISTS book输出结果:(integer) 1127.0.0.1:6379> EXISTS book1输出结果:(integer) 0
由上述结果可知,键book存在,键book1不存在。
8. TYPE
使用TYPE命令查看指定键的类型,语法格式如下所示。
TYPE key
【例】查看键book的类型。具体如下所示。
127.0.0.1:6379> TYPE book输出结果:string
由上述结果可知,键book的类型为String类型。
9. RENAME
使用RENAME命令修改指定键的名称,语法格式如下所示。
RENAME key newkey
上述语法中,RENAME是修改指定键的名称的命令,key为旧键,newkey为新键。
【例】修改键book的名称为newbook,具体如下所示。
127.0.0.1:6379> RENAME book newbook输出结果:OK127.0.0.1:6379> KEYS *输出结果:1) "subject2"2) "newbook"3) "subject1"4) "subject4"5) "subject3"由上述结果可知,键boo

键book的名称已经修改为newbook。

10. EXPIRE
使用EXPIRE命令设置指定键的过期时间,语法格式如下所示。
EXPIRE key seconds
上述语法中,EXPIRE是设置键的过期时间的命令,key为键名,seconds为设置的过期时间,以秒为单位。
【例】设置键subject4的过期时间为60秒(s),具体如下所示。
127.0.0.1:6379> EXPIRE subject4 60输出结果:(integer) 1
由上述结果可知,已成功设置键subject4的过期时间为60s。当60s过后,键subject4则会自动消失。
11. TTL
使用TTL命令查看指定键的剩余过期时间,语法格式如下所示。
TTL key
【例】查看键subject4的剩余过期时间,具体如下所示。
127.0.0.1:6379> TTL subject4输出结果:(integer) 34
由上述结果可知,键subject4的剩余过期时间为34秒。
12. PERSIST
使用PERSIST命令移除键的过期时间,使键从生存状态转化到永久存在状态,语法格式如下所示。
PERSIST key
【例】移除键subject4的过期时间,具体如下所示。
127.0.0.1:6379> PERSIST subject4输出结果:(integer) 1
由上述结果可知,键subject4的过期时间已经被移除。
13. MOVE
使用MOVE命令将当前数据库的key移动到指定数据库当中,语法格式如下所示。
MOVE key db
上述语法中,MOVE是将当前数据库的key移动到另一个指定数据库当中的命令,key为键名,db为指定的数据库。
【例】将键subject4移动到编号为2的数据库,具体如下所示。
127.0.0.1:6379> MOVE subject4 2输出结果:(integer) 1127.0.0.1:6379> SELECT 2输出结果:OK127.0.0.1:6379[2]> KEYS *输出结果:1) "subject4"
由上述结果可知,键subject4已成功移动到编号为2的数据库中。
14. RANDOMKEY
使用RANDOMKEY命令从当前数据库中随机返回一个键,语法格式如下所示。
RANDOMKEY
【例】在数据库0中,随机返回一个键,具体如下所示。
127.0.0.1:6379> SELECT 0输出结果:OK127.0.0.1:6379> RANDOMKEY输出结果:"subject3"
由上述结果可知,在数据库0中随机返回了键subject3。
15. DEL
使用DEL命令删除已存在的键,语法格式如下所示。
DEL key
【例】将键subject3和键subject6删除,具体如下所示。
127.0.0.1:6379> KEYS *输出结果:1) "subject2"2) "newbook"3) "subject1"4) "subject3"127.0.0.1:6379> DEL subject3输出结果:(integer) 1127.0.0.1:6379> DEL subject6输出结果:(integer) 0127.0.0.1:6379> KEYS *输出结果:1) "subject2"2) "newbook"3) "subject1"
由上述结果可知,已成功删除键subject3,而键subject6由于不存在,因此该键删除失败。



欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。

              ↓↓↓ 点个在看,无需赞赏!

原文作者:运维book思议;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-09-24

  • 博文量
    333
  • 访问量
    215295