更多命令可以参考规范文档:http://www.redis.cn/commands.html
启动Redis服务器:到Redis的bin目录执行 ./redis-server &
关闭redis服务器:到Redis的bin目录执行 ./redis-cli shutdown
连接redis客户端:到redis目录执行:redis-server
/usr/local/redis/etc/redis.conf开启服务,再执行 redis-cli –h ip –a 密码或者
–p 端口号(6379)
查看状态:ping返回PING
查看当前key的数目:dbsize
切换库:select db
删除当前库的数据:flushdb
退出连接:exit/quit
Key命令:
显示所有key :keys *
判断key存在:exists key
设置key的存在时间:expire key 时间秒
查看key剩余时间:ttl key,结果为 -1 代表不过期,-2
代表key不存在,其他数字代表剩余时间
显示key的类型:type key
删除key: del key
设置key值:set key 值
同时设置key值:mset key1 值1 key2 值2 。。。
获取key值:get key
同时获取key值:mget key1 key2 ……
将key中的数字加一、减一:incr key/decr key
追加key值:append key 值
返回字符串长度:strlen key
截取字符串:getrange key 开始下标 结束下标
替换字符串:setrange key 下标 值
Hash命令:
设置hash值:hset hash名 key名 value值
获取hash值:hget hash名 key名
同时设置hash值:hmset hash名 key1名 value1值 key2名 value2值
同时获取hash值:hmget hash名 key1名 key2名
获取所有hash值:hgetall hash名
删除hash的key值:hdel hash名 key1 key2….
查看hash中的所有key:hkeys hash名
返回所有hash中的所有value: hvals hash名
查看hash中存在key: hexists hash名 key名
List命令:
左设置list值:lpush list名 value1 v2 v3…
右设置list值:rpush list名 value1 v2 v3…
获取list值:lrange list名 开始下标 结束下标
获取指定下标的值:lindex list名 下标
获取list的长度:llen list名
移除list的值:lrem list名 count(数量 0 代表全部删除 正数 代表从左向右
负数代表从右向左) value
设置相应下标的的list值:lset list名 下标 value值
插入list的值:linsert list名 before|after 需插入的value 待插入的value
Set命令:
添加数据到set: sadd set名 value1 v2…
获取set所有数据: smembers set名
判断set存在数据:sismember set名 value值
获取set的元素个数:scard set名
删除set的元素:srem set名 value1 v2…
随机获取set的元素:srandmember set名 [count]
随机删除set的元素:spop set名 [count]
有序集合sorted set
添加数据:zadd set名 数字(scores) value 数字 v2
升序显示数据:zrange set名 开始下标(0)
结束下标(-1)withscores
降序显示数据 zrevrange set名 开始下标(0)结束下标(-1) withscores
删除数据:zrem set名 value1 v2 …
获取元素个数:zcard set名
升序获取介于min max区间的值:zrangbyscore set名 [“(”
代表不包括最小值]min数 max数 [withscores] [limit start stop]
降序获取介于min max区间的值:zrevrangbyscore set名 [“(”
代表不包括最小值]min数 max数 [withscores] [limit start stop]
获取介于min max区间的个数:zcount set名 min max数
事务
标记事务:multi
执行事务:exec
取消事务:discard
监视key:watch key1 k2…
取消监视:unwatch
持久化
1.RDF方式配置步骤:
①:查看 ps -ef | grep redis ,如果 redis 服务启动,先停止。
②:修改 redis.conf 文件, 修改前先备份,执行 cp redis.conf bak_redis.conf
查看默认启用的 RDB 文件
③:编辑 redis.conf 增加 save 配置, 修改文件名等。vim redis.conf
修改的内容:
把原来的默认的 dump.rdb 删除,修改 redis.conf 后,重新启动 redis
④:在 20 秒内容,修改三个 key 的值
⑤:查看生成的 rdb 文件
2.AOF方式配置步骤:
①:停止运行的 redis , 备份要修改的 redis.conf
②:查看 redis 安装目录/src 下有无 .aof 文件。 默认是在 redis 的当前目录
** ③:编辑 redis.conf**
** 设置 appendonly 为 yes 即可。**
** 查看 appendfsync 的当前策略。**
** 查看 appendfilname 的文件名称**
** ④:在 redis 客户端执行 写入命令**
** ⑤ 查看 aof 文件**
方式
1:修改配置文件,启动时,服务器读取配置文件,并自动成为指定服务器的从服务器,从而构成主从复制的关系
方式 2: ./redis-server --slaveof
时指定当前服务成为某个主 Redis 服务的从 Slave
方式 1 的实现步骤:
模拟多 Reids 服务器, 在一台已经安装 Redis 的机器上,运行多个 Redis
应用模拟多个 Reids 服务器。一个 Master,两个 Slave.
A、新建三个 Redis 的配置文件
如果 Redis 启动,先停止。
作为 Master 的 Redis 端口是 6380
作为 Slaver 的 Redis 端口分别是 6382 , 6384
从原有的 redis.conf 拷贝三份,分别命名为 redis6380.conf, redis6382.conf ,
redis6384.conf
B、 编辑 Master 配置文件
编辑 Master 的配置文件 redis6380.conf : 在空文件加入如下内容
include /usr/local/redis-3.2.9/redis.conf
daemonize yes port 6380
pidfile /var/run/redis_6380.pid logfile 6380.log
dbfilename dump6380.rdb
配置项说明:
include : 包含原来的配置文件内容。/usr/local/redis-3.2.9/redis.conf
按照自己的目录设置。
daemonize:yes 后台启动应用,相当于 ./redis-server & , &的作用。
port : 自定义的端口号
pidfile : 自定义的文件,表示当前程序的 pid ,进程 id。
logfile:日志文件名
dbfilename:持久化的 rdb 文件名
C、 编辑 Slave 配置文件
编辑 Slave 的配置文件 redis6382.conf 和 redis6384.conf: 在空文件加入如下内容
①:redis6382.conf:
include /usr/local/redis-3.2.9/redis.conf
daemonize yes
port 6382
pidfile /var/run/redis_6382.pid logfile 6382.log
dbfilename dump6382.rdb slaveof 127.0.0.1 6380
配置项说明:
slaveof : 表示当前 Redis 是谁的从。当前是 127.0.0.0 端口 6380 这个
Master 的从。
②:redis6384.conf:
include /usr/local/redis-3.2.9/redis.conf daemonize yes
port 6384
pidfile /var/run/redis_6384.pid logfile 6384.log
dbfilename dump6384.rdb
slaveof 127.0.0.1 6380
D、启动服务器 Master/Slave 都启动
启动方式 ./redis-server 配置文件
启动 Redis,并查看启动进程
E、 查看配置后的服务信息
命令:
①: Redis 客户端使用指定端口连接 Redis 服务器
./redis-cli -p 端口
②:查看服务器信息
info replication
登录到 Master:6380
查看当前服务信息
在客户端的 Redis 内执行命令 info replication
Master 服务的查看结果:
在新的 Xshell 窗口分别登录到 6382 ,6384 查看信息
6384 也登录内容同 6382
F、 向 Master 写入数据
在 6380 执行 flushall 清除数据,避免干扰的测试数据。 生产环境避免使用。
G、在从 Slave 读数据
6382,6384 都可以读主 Master 的数据,不能写
Slave 写数据失败
master 上(冷处理:机器挂掉了,再处理)当 Master 服务出现故障,需手动将 slave
中的一个提升为 master, 剩下的 slave 挂至新的
命令:
①:slaveof no one,将一台 slave 服务器提升为 Master (提升某 slave 为 master)
②:slaveof 127.0.0.1 6381 (将 slave 挂至新的 master 上)
执行步骤:
A、将 Master:6380 停止(模拟挂掉)
B、 选择一个 Slave 升到 Master,其它的 Slave 挂到新提升的 Master
C、 将其他 Slave 挂到新的 Master
在 Slave 6384 上执行
现在的主从(Master/Slave)关系:Master 是 6382 , Slave 是 6384
查看 6382:
D、原来的服务器重新添加到主从结构中
6380 的服务器修改后,从新工作,需要把它添加到现有的Master/Slave 中
先启动 6380 的 Redis 服务
连接到 6380 端口
当前服务挂到 Master 上
E、 查看新的 Master 信息
在 6382 执行:
现在的 Master/Slaver 关系是:
Master: 6382;Slave: 6380、6384
(1)、Sentinel 配置
Sentinel 配置文件 ,复制三份sentinel.conf文
三个文件分别命名:
● sentinel26380.conf
● sentinel26382.conf
● sentinel26384.conf
● 执行复制命令 cp sentinel.conf xxx.conf
(2)、三份 sentinel 配置文件修改
● 修改 port 26380、 port 26382、 port 26384
● 修改 sentinel monitor mymaster 127.0.0.1 6380 2
格式:sentinel monitor
Sentinel监控主(Master)Redis,
Sentinel根据Master的配置自动发现Master的Slave,Sentinel默认端口号为26379 。
sentinel26380.conf
(1) 修改 port
(2)修改监控的 master 地址
sentinel26382.conf 修改port 26382 , master的port 6382
sentinel26384.conf 修改port 26384 , master的port 6382
(3)、启动主从(Master/Slave)Redis
启动 Reids
查看 Master 的配置信息
连接到 6382 端口
使用 info 命令查看 Master/Slave
(4)、启动 Sentinel
redis安装时make编译后就产生了redis-sentinel程序文件,可以在一个redis中运行多个sentinel进程。
启动一个运行在Sentinel模式下的Redis服务实例
./redis-sentinel sentinel 配置文件
执行以下三条命令,将创建三个监视主服务器的Sentinel实例:
./redis-sentinel …/sentinel26380.conf
./redis-sentinel …/sentinel26382.conf
./redis-sentinel …/sentinel26384.conf
在 XShell 开启三个窗口分别执行:
(5)、主 Redis 不能工作
让 Master 的 Redis 停止服务, 执行 shutdown
先执行 info replication 确认 Master 的 Redis ,再执行 shutdown
(6)、Sentinel 的起作用
在 Master 执行 shutdown 后, 稍微等一会 Sentinel 要进行投票计算,从可用的
Slave选举新的 Master。
查看 Sentinel 日志,三个 Sentinel 窗口的日志是一样的。
查看新的 Master
查看原 Slave 的变化
(7)、新的 Redis 加入 Sentinel 系统,自动加入 Master
重新启动 6382
查看 6384 的信息
测试数据:在 Master 写入数据
在 6382 上读取数据,不能写入
● 开启访问密码设置
修改 redis.conf , 使用 vim 命令。 找到
requirepass 行去掉注释,requirepass 空格后就是密码。
例 1:设置访问密码是 123456 ,这是练习使用,生产环境要设置复杂密码修改
redis.conf,文件 480 行左右。原始内容:
修改后:
查看修改结果:
● 访问有密码的 Redis
如果 Redis 已经启动,关闭后,重新启动。
访问有密码的 Redis 两种方式:
①:在连接到客户端后,使用命令 auth 密码 , 命令执行成功后,可以正常使用 Redis
②:在连接客户端时使用 -a 密码。例如 ./redis-cli -h ip -p port -a password
启动 Redis
使用 ① 访问
输入命令 auth 密码
使用 ② 方式
绑定 ip
修改 redis.conf 文件,把# bind 127.0.0.1 前面的注释#号去掉,然后把
127.0.0.1 改成允,许访问你 redis 服务器的 ip 地址,表示只允许该 ip
进行访问。多个 ip 使用空格分隔。
例如 bind 192.168.1.100 192.168.2.10
** 修改默认端口**
修改 redis 的端口,这一点很重要,使用默认的端口很危险,redis.conf 中修改
port 6379
将其修改为自己指定的端口(可随意),端口
1024 是保留给操作系统使用的。用户可以使用的范围是 1024-65535
repass 空格后就是密码。
例 1:设置访问密码是 123456 ,这是练习使用,生产环境要设置复杂密码修改
redis.conf,文件 480 行左右。原始内容:
[外链图片转存中…(img-3MtzJXAs-1614156952957)]
修改后:
[外链图片转存中…(img-4ALUkDCw-1614156952958)]
查看修改结果:
[外链图片转存中…(img-nAzUAbWN-1614156952959)]
● 访问有密码的 Redis
如果 Redis 已经启动,关闭后,重新启动。
访问有密码的 Redis 两种方式:
①:在连接到客户端后,使用命令 auth 密码 , 命令执行成功后,可以正常使用 Redis
②:在连接客户端时使用 -a 密码。例如 ./redis-cli -h ip -p port -a password
启动 Redis
[外链图片转存中…(img-Eca8jyFP-1614156952959)]
使用 ① 访问
[外链图片转存中…(img-5sUxoSX6-1614156952960)]
输入命令 auth 密码
[外链图片转存中…(img-RU2dBOuw-1614156952961)]
使用 ② 方式
[外链图片转存中…(img-dYICST4M-1614156952962)]
绑定 ip
修改 redis.conf 文件,把# bind 127.0.0.1 前面的注释#号去掉,然后把
127.0.0.1 改成允,许访问你 redis 服务器的 ip 地址,表示只允许该 ip
进行访问。多个 ip 使用空格分隔。
例如 bind 192.168.1.100 192.168.2.10
[外链图片转存中…(img-PiyGQXCg-1614156952962)]
** 修改默认端口**
修改 redis 的端口,这一点很重要,使用默认的端口很危险,redis.conf 中修改
port 6379
将其修改为自己指定的端口(可随意),端口
1024 是保留给操作系统使用的。用户可以使用的范围是 1024-65535
[外链图片转存中…(img-BIBSUwWX-1614156952963)]
使用 -p 参数指定端口,例如:./redis-cli -p 新设置端口