NoSQL之Redis配置与优化,其二(Redis数据库常用命令及高可用)

NoSQL之Redis配置与优化(二)

一、Redis 数据库常用命令

set:存放数据,命令格式为set key value(类似将value赋值给key)

get: 获取教据,命令格式为get key(类似查看key的值,)

例子

[root@localhost utils]# redis-cli -h 192.168.171.7 -p 6379
192.168.171.7:6379> set teacher zhangsan
OK
192.168.171.7:6379> get teacher
"zhangsan"

在这里插入图片描述

keys命令

可以取符合规则的键值列表,通常情况可以结合*、﹖等选项来使用。
先创建一些键值进行试验

127.0.0.1:6379> set k1 1
127.0.0.1:6379> set k2 2
127.0.0.1:6379> set k3 3
127.0.0.1:6379> set v1 4
127.0.0.1:6379> set v5 5
127.0.0.1:6379> set v22 5
127.0.0.1:6379> KEYS *		#查看当前数据库中所有键

127.0.0.1:6379> KEYS v*		#查看当前数据库中以v开头的数据

127.0.0.1:6379> KEYS v?		#查看当前数据库中以v开头后面包含任意一位的数据

127.0.0.1:6379> KEYS v?? 	#查看当前数据库中以v开头v开头后面包含任意两位的数据

在这里插入图片描述
在这里插入图片描述

exists 命令

可以判断键值是否存在。

127.0.0.1:6379> exists teacher		#判断teacher键是否存在
(integer) 1							#1表示teacher键是存在
127.0.0.1:6379> exists tea
(integer) 0							#0表示tea键不存在

在这里插入图片描述

del命令

可以册除当前数据库的指定key。

127.0.0.1:6379> keys *
127.0.0.1:6379> del v5
127.0.0.1:6379> get v5

在这里插入图片描述

type命令

可以获取key 对应的value值类型。

127.0.0.1:6379> type k1

string

在这里插入图片描述

rename命令

是对已有key进行重命名。(覆盖)

命令格式:rename 源key 目标key

#使用rename命令进行重命名时,无论目标key是否存在都进行重命名,且源key的值会覆盖目标key的值。在实际使用过程中,建议先用exists命令查看目标 key是否存在,然后再决定是否执行 rename命令,以避免覆盖重要数据。

过程

127.0.0.1:6379> keys v*
1) "v1"
2) "v22"

127.0.0.1:6379> rename v22 v2
oK

127.0.0.1:6379> keys v*
1)“v1"
2)"v2"

127.0.0.1:6379> get v1
"4"

127.0.0.1:6379> get v2
"5"

127.0.0.1:6379> rename v1 v2
OK

127.0.0.1:6379> get v1
(nil)

127.0.0.1:6379> get v2
"4"

#v1会覆盖掉v2,只剩下v2这一个键和v1的值

在这里插入图片描述

renamenx 命令

作用是对已有 key进行重命名,并检测新名是否存在,如果目标key 存在则不进行重命名。(不覆盖)

命令格式: renamenx 源key 目标key

过程


127.0.0.1:6379> keys *
127.0.0.1:6379> get teacher
"zhangsan"

127.0.0.1:6379> get v2
"4"
127.0.0.1:6379> renamenx v2 teacher
(integer) 0
127.0.0.1:6379> keys *
127.0.0.1:6379> get teacher
"zhangsan"
127.0.0.1:6379> get v2
"4"

在这里插入图片描述

dbsize命令

作用是查看当前数据库中key的数目。

127.0.0.1:6379> dbsize

在这里插入图片描述

使用config set requirepass yourpassword命令设置密码

127.0.0.1:6379> config set requirepass abc123

使用config get requirepass命令查看密码(一旦设置密码,必须先验证通过密码,否则所有操作不可用)

127.0.0.1:6379> auth abc123
127.0.0.1:6379> config get requirepass

在这里插入图片描述
才能继续命令操作
在这里插入图片描述

退出工具后再切换进去,必须要验证密码才能操作命令

config set requirepass ''
#可以两个单引号设置密码为无

在这里插入图片描述

二、Redis 多数据库常用命令

Redis支持多数据库,Redis默认情况下包含16个数据库,数据库名称是用数字0-15来依次命名的。多数据库相互独立,互不干扰。

多数据库间切换

命令格式: select 序号

使用redis-cli连接Redis数据库后,默认使用的是序号为0的数据库。

127.0.0.1:6379> select 10
#切换至序号为10的数据库

127.0.0.1:6379[10]> select 15
#切换至序号为15的数据库

127.0.0.1:6379[15]> select 0
#切换至序号为0的数据库

在这里插入图片描述

多数据库间移动数据

命令格式:move 键值 序号

实验

127.0.0.1:6379> set k1 100
OK
127.0.0.1:6379> get k1
"100"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get k1
(nil)
127.0.0.1:6379[1]> select 0			#切换至目标数据库0
OK
127.0.0.1:6379> get k1				#查看目标数据是否存在
"100"
127.0.0.1:6379> move k1 1			#将数据库0 中k1移动到数据库1中
(integer) 1
127.0.0.1:6379> select 1			#切换至目标数据库1
OK
127.0.0.1:6379[1]> get k1			#查看被移动数据
"100"
127.0.0.1:6379[1]> select 0
OK
127.0.0.1 :6379> get k1				#在数据库0中无法查看到k1 的值
(nil)

在这里插入图片描述

清除数据库内数据

FLUSHDB:清空当前数据库数据

FLUSHALL:清空所有数据库的数据,慎用!

三、Redis高可用

在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99、99.999%等等)

但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离、快速容灾技术),还需要考虑数据容量的扩展、数据安全不会丢失等。

在Redis中,实现高可用的技术主要包括持久化、主从复制、哨兵和集群,下面分别说明它们的作用,以及解决了什么样的问题。

持久化:

是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份
即将数据存储在硬盘,保证数据不会因
进程退出而丢失。

主从复制:

主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。

哨兵:

在主从复制的基础上,哨兵实现了自动化的故障恢复。缺陷:写操作无法负载均衡;存储能力受到单机的限制。

集群:

通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。

猜你喜欢

转载自blog.csdn.net/Gloomyumenge/article/details/114001126