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解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。