基礎詳解之Redis的使用
這篇文章為大家帶來了關於Redis的相關知識,其中主要介紹了關於redis的一些基礎知識,redis是內存性數據庫,斷電,數據丟失,進程重啟,數據丟失,下面一起來看一下,希望對大家有幫助。
推薦學習:Redis影片教學
#Redis
##1 .基礎知識
redis是內存性資料庫,斷電,資料遺失,進程重啟,資料遺失需要配置redis的資料持久化,防止資料遺失redis支援ms複製,讀寫分離,防止單點故障,資料遺失1.1.安裝- rpm套件安裝
- yum自動化安裝,在阿里的yum倉庫中,有redis的軟體包
yum install redis -y
登入後複製 - 原始碼編譯安裝
# 1.下载redis源码 wget http://download.redis.io/releases/redis-4.0.10.tar.gz # 2.解压缩 tar -zxf redis-4.0.10.tar.gz # 3.切换redis源码目录 cd redis-4.0.10.tar.gz # 4.编译源文件 make # 5.编译好后,src/目录下有编译好的redis指令 # 6.make install 安装到指定目录,默认在/usr/local/bin make install DESTDIR=/your/dir
登入後複製
用yum安裝的redis,預設設定檔在/etc/redis.conf
- #設定檔參數解釋
# vim /etc/redis.conf #打开如下参数即可# 这里是绑定redis的启动地址,如果你支持远程连接,就改为0.0.0.0bind 0.0.0.0 #更改端口port 6500#设置redis的密码requirepass haohaio#默认打开了安全模式protected-mode yes #打开一个redis后台运行的参数daemonize yes
登入後複製
# 为什么使用systemctl start redis无法连接呢?
# 是因为这个命令默认连接的是6379端口,我们更改了redis端口,因此无法连接了
# 请使用如下的命令,指定配置文件启动
[root@s25linux opt]# redis-server /etc/redis.conf
登入後複製
# 为什么使用systemctl start redis无法连接呢? # 是因为这个命令默认连接的是6379端口,我们更改了redis端口,因此无法连接了 # 请使用如下的命令,指定配置文件启动 [root@s25linux opt]# redis-server /etc/redis.conf
- 檢查進程狀態
#检查redis的进程 [root@s25linux opt]# ps -ef|grep redis root 6498 1 0 11:42 ? 00:00:00 redis-server 0.0.0.0:6500
登入後複製
# 连接redis服务端,指定ip地址和端口,以及密码连接redis
# -p 指定端口
# -h 指定ip地址
# auth指令,用于密码验证
[root@s25linux opt]# redis-cli -p 6500 -h 192.168.178.143
192.168.178.143:6500> ping
(error) NOAUTH Authentication required.
192.168.178.143:6500> auth haohaio
OK
192.168.178.143:6500> ping
PONG
登入後複製
1.5.常用指令# 连接redis服务端,指定ip地址和端口,以及密码连接redis # -p 指定端口 # -h 指定ip地址 # auth指令,用于密码验证 [root@s25linux opt]# redis-cli -p 6500 -h 192.168.178.143 192.168.178.143:6500> ping (error) NOAUTH Authentication required. 192.168.178.143:6500> auth haohaio OK 192.168.178.143:6500> ping PONG
1.keys * 列出redis所有的key
2.type key 查看key类型
3.expire key seconds 过期时间
4.ttl key 查看key过期剩余时间 -2表示key已经不存在了
5.persist 取消key的过期时间 -1表示key存在,没有过期时间
6.exists key 判断key存在 存在返回1 否则0
7.del keys 删除key 可以删除多个
8.dbsize 计算key的数量
登入後複製
2.RDB持久化
1.keys * 列出redis所有的key 2.type key 查看key类型 3.expire key seconds 过期时间 4.ttl key 查看key过期剩余时间 -2表示key已经不存在了 5.persist 取消key的过期时间 -1表示key存在,没有过期时间 6.exists key 判断key存在 存在返回1 否则0 7.del keys 删除key 可以删除多个 8.dbsize 计算key的数量
#redis 提供了
RDB持久化的功能,這個功能可以將
redis在記憶體中的狀態儲存到硬碟中,它可以
手動執行。
redis.conf中配置,
定期執行。
經過壓縮的二進位檔案,這個檔案被保存在硬碟中,redis可以透過這個檔案還原資料庫當時的狀態。
- 配置rdb機制的資料持久化,資料檔案是一個看不懂的二進位文件,且配置觸發的時間機制vim s25_rdb_redis.conf ,寫入以下內容
daemonize yes #后台运行 port 6379 #端口 logfile /data/6379/redis.log #指定redis的运行日志,存储位置 dir /data/6379 #指定redis的数据文件,存放路径 dbfilename s25_dump.rdb #指定数据持久化的文件名字 bind 127.0.0.1 #指定redis的运行ip地址 #redis触发save指令,用于数据持久化的时间机制 # 900秒之内有1个修改的命令操作,如set .mset,del save 900 1 # 在300秒内有10个修改类的操作 save 300 10 # 60秒内有10000个修改类的操作 save 60 10000
登入後複製 - 建立redis的資料資料夾,
mkdir -p /data/6379
登入後複製 - 殺死先前所有的redis,防止擾亂實驗
[root@s25linux s25redis]# pkill -9 redis
登入後複製 - 指定配置了rdb的redis配置文件,啟動
redis-server s25_rdb_redis.conf
登入後複製 - #如果沒有觸發redis的持久化時間機制,資料檔是不會產生的,數據重啟進程也會遺失
- 可以透過編寫腳本,讓redis手動執行save命令,觸發持久化,在redis命令列中,直接輸入save即可觸發持久化
127.0.0.1:6379> set addr shahe OK 127.0.0.1:6379> 127.0.0.1:6379> set age 18 OK 127.0.0.1:6379> 127.0.0.1:6379> 127.0.0.1:6379> keys * 1) "age" 2) "addr" 3) "name" 127.0.0.1:6379> save OK
登入後複製 - 存在了rdb持久化的檔案之後,重啟redis進程,資料也不會遺失了,redis在重啟之後,會讀取dump.rdb檔案中的資料
#rdb的弊端在於什麼,如果沒有觸發持久化機制,就發生了機器宕機,資料就會遺失了,因此redis有一個更好的aof機制
記錄伺服器執行的所有變更操作命令(例如set del等),並在伺服器啟動時,透過重新執行這些指令來還原資料集
AOF 檔案中的指令全部以redis協定的格式儲存,新指令追加到檔案結尾。
優點:最大程度保證資料不會遺失
缺點:日誌記錄非常大
redis-client 写入数据 > redis-server 同步命令 > AOF文件
- ##新設定文件,配置以下參數。
-
vim s25_aof_redis.conf AOF持久化配置,两条参数 appendonly yes appendfsync always 总是修改类的操作 everysec 每秒做一次持久化 no 依赖于系统自带的缓存大小机制
登入後複製例如參數配置為 -
daemonize yes port 6379logfile /data/6379aof/redis.logdir /data/6379dbfilename dbmp.rdb requirepass redhat save 900 1save 300 10save 60 10000appendonly yes appendfsync everysec
登入後複製#建立aof的資料資料夾 -
mkdir -p /data/6379aof
登入後複製啟動aof的Redis資料庫 -
redis-server s25_aof_redis.conf
登入後複製aof機制的資料庫,在第一次啟動的時候,就會產生aof資料檔了,如下 -
[root@s25linux 6379aof]# lsappendonly.aof redis.log
登入後複製
- 登入redis,寫入資料
-
[root@s25linux s25redis]# redis-cli127.0.0.1:6379>127.0.0.1:6379>127.0.0.1:6379> keys *(empty list or set)127.0.0.1:6379> set name zhunbeixiakechifan OK127.0.0.1:6379> set name2 xinkudajiale OK127.0.0.1:6379> keys *1) "name2"2) "name"
登入後複製#寫入的操作,會被記錄到aof檔案日誌中 - 殺死所有的redis進程,且重啟
-
[root@s25linux s25redis]# pkill -9 redis[root@s25linux s25redis]# redis-server s25_aof_redis.conf
登入後複製redis的aof持久化機制,是在重啟的時候,redis重新執行一遍aof檔案中的命令,實現資料復現 - 如果該aof日誌檔案被刪除,資料也就無法恢復了
- 4.一主一從資料同步複製
4.1.說明
上午的最後一步,演示的是,當我們刪除aof文件,或者是rdb,aof檔案異常損壞,遺失,資料不也沒了嗎?
在一台機器上運行2個以上的redis,是redis支援多實例的功能,基於連接埠號碼的不同,就能夠執行多個相互獨立的redis資料庫
什么是多实例 就是机器上运行了多个redis相互独立的进程 互不干扰的独立的数据库 叫做多个redis数据库的实例,基于配置文件区分即可
如圖是redis的多實例功能,且配置主從同步的圖
#4.2.設定步驟
- 準備好2個redis的設定文件,分別寫入如下內容
-
- vim s25-master-redis.conf
-
port 6379 # 端口 daemonize yes # 后台运行 pidfile /s25/6379/redis.pid # loglevel notice logfile "/s25/6379/redis.log" # 日志存放目录 dbfilename dump.rdb # 持久化文件名 dir /s25/6379 # 数据文件保存的路径 protected-mode no # 打开安全模式
登入後複製vim s25-slave-redis .conf -
port 6389 daemonize yes pidfile /s25/6389/redis.pid loglevel notice logfile "/s25/6389/redis.log" dbfilename dump.rdb dir /s25/6389 protected-mode no # 可以直接在配置文件中,定义好复制关系,启动后,立即就会建立复制 slaveof 127.0.0.1 6379
登入後複製
#分別產生2個redis的資料夾 -
mkdir -p /s25/{6379,6389}
登入後複製-
分别启动2个redis数据库。
[root@s25linux s25redis]# redis-server s25-master-redis.conf [root@s25linux s25redis]# [root@s25linux s25redis]# [root@s25linux s25redis]# redis-server s25-slave-redis.conf
登入後複製 -
分别检查他们的进程,以及复制关系
[root@s25linux s25redis]# redis-cli -p 6379 info replication [root@s25linux s25redis]# redis-cli -p 6389 info replication # 通过一条命令,配置他们的复制关系,注意,这个命令只是临时配置redis的复制关系, # 想要永久修改,还得修改配置文件 redis-cli -p 6389 slaveof 127.0.0.1 6379
登入後複製 -
配置完毕说明
此时 6379 ==== 主库 6389 ==== 从库 此时可以向6379中写入数据,能够同步到6389中 6389是一个只读的数据库,无法写入数据
登入後複製
5.一主多从及主从复制故障切换
5.1.一主多从配置
-
再创建一个配置文件,port是6399,且加入到一主一从的复制关系中去
# vim s25-salve2-redis.conf port 6399daemonize yes pidfile /s25/6399/redis.pid loglevel notice logfile "/s25/6399/redis.log"dbfilename dump.rdbdir /s25/6399protected-mode no slaveof 127.0.0.1 6379
登入後複製 -
创建数据文件夹
mkdir -p /s25/6399
登入後複製 -
此时可以启动6399的数据库,查看他的身份复制关系
[root@s25linux s25redis]# redis-cli -p 6399 info replication
登入後複製
5.2.故障切换
-
故障模拟
-
环境准备,准备3个redis的数据库实例,分别是 6379(主)、6389(从1)、6399(从2),配置好一主两从的关系
[root@s25linux s25redis]# ps -ef|grep redis root 11294 1 0 15:19 ? 00:00:01 redis-server *:6379 root 11310 1 0 15:19 ? 00:00:01 redis-server *:6389 root 11620 1 0 15:33 ? 00:00:00 redis-server *:6399
登入後複製 -
分别查看复制关系
[root@s25linux s25redis]# redis-cli -p 6379 info replication # Replication role:master connected_slaves:2 slave0:ip=127.0.0.1,port=6389,state=online,offset=1883,lag=1 slave1:ip=127.0.0.1,port=6399,state=online,offset=1883,lag=1
登入後複製 -
此时模拟故障,直接kill掉主库
kill -9 11294
登入後複製 -
此时留下2个孤零零的从库,没有了主人,还没发写入数据,很难受
此时一位从库(6399),不乐意了,翻身农奴做主人,去掉自己的从库身份,
没有这个从库的枷锁,我就是我自己的主人
[root@s25linux s25redis]# redis-cli -p 6399 slaveof no one
登入後複製 -
此时6399已然是主库了,修改6389的复制信息,改为6399即可
[root@s25linux s25redis]# redis-cli -p 6389 slaveof 127.0.0.1 6399
登入後複製 -
此时检查他们的复制关系
[root@s25linux s25redis]# redis-cli -p 6389 info replication[root@s25linux s25redis]# redis-cli -p 6399 info replication
登入後複製 此时可以向主库6399写入数据,6389查看数据即可
主库不挂,从库挂掉的场景
从库挂掉,无所谓,重新再建立一个从库,加入主从复制即可,。,。
你会发现,如此的手动切换复制关系,其实是很难受的,如果在夜里凌晨四点,redis主库突然挂了,你该怎么办?你媳妇愿意让你起来干活吗?
因此你该咋办?是不是得学点别的技术?你希望有什么东西能帮你不?
- 有钱,你搞一个贾维斯
- 希望有一个人,能24h帮你盯着这个主从复制,发现主库宕机之后,自动的帮你进行主从切换
6.高可用哨兵 sentinel
6.1.工作原理
配置好redis的哨兵进程,一般都是使用3个哨兵(保安) 哨兵的作用是盯着redis主库,不断询问它是否存活,如果超过30s(设置的时间阈值)都没有回应,3个哨兵会判断主库宕机,谈话进行投票机制, 因为3个哨兵,要自动的去选择从库为新的主库,每个哨兵的意见可能不一样,因此引出投票机制,少数服从多数。 当多个哨兵达成一致,选择某一个从库阶段,自动的修改他们的配置文件,切换新的主库 此时如果宕机的主库,恢复后,哨兵也会自动将其加入集群,且自动分配为新的从库 这一些都是自动化,无需人为干预,贼牛屁
6.2.架构
6.3.Redis配置
-
准备3个redis节点,1主2从的redis集群
# redis支持多实例-------基于多个配置文件,运行处多个redis相互独立的进程 s25-redis-6379.conf -----主 port 6379 daemonize yes logfile "6379.log" dbfilename "dump-6379.rdb" dir "/var/redis/data/" s25-redis-6380.conf------从1 port 6380 daemonize yes logfile "6380.log" dbfilename "dump-6380.rdb" dir "/var/redis/data/" slaveof 127.0.0.1 6379 s25-redis-6381.conf-----从2 port 6381 daemonize yes logfile "6381.log" dbfilename "dump-6381.rdb" dir "/var/redis/data/" slaveof 127.0.0.1 6379 # 查看3个配置文件,准备分别启动该进程 [root@s25linux s25sentinel]# ls s25-redis-6379.conf s25-redis-6380.conf s25-redis-6381.conf
登入後複製 -
创建数据存储文件夹
mkdir /etc/redis/data
登入後複製 -
分别启动3个进程后,检查进程情况
[root@s25linux s25sentinel]# redis-server s25-redis-6379.conf [root@s25linux s25sentinel]# redis-server s25-redis-6380.conf [root@s25linux s25sentinel]# redis-server s25-redis-6381.conf [root@s25linux s25sentinel]# ps -ef|grep redis root 20413 1 0 08:45 ? 00:00:00 redis-server *:6379 root 20417 1 0 08:45 ? 00:00:00 redis-server *:6380 root 20422 1 0 08:45 ? 00:00:00 redis-server *:6381
登入後複製 -
确定3个库的主从关系
[root@s25linux s25sentinel]# redis-cli -p 6379 info replication # Replication role:master connected_slaves:2 slave0:ip=127.0.0.1,port=6380,state=online,offset=183,lag=1 slave1:ip=127.0.0.1,port=6381,state=online,offset=183,lag=1
登入後複製
6.4.sentinel 配置
-
分别准备3个哨兵的配置文件,修改如下,三个哨兵的配置文件,仅仅是端口号的不同
# vim s25-sentinel-26379.conf port 26379 dir /var/redis/data/ logfile "26379.log" // 当前Sentinel节点监控 192.168.119.10:6379 这个主节点 // 2代表判断主节点失败至少需要2个Sentinel节点节点同意 // mymaster是主节点的别名 sentinel monitor mymaster 127.0.0.1 6379 2 // 每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达, // 如果超过30000毫秒30s且没有回复,则判定不可达 sentinel down-after-milliseconds s25msredis 30000 // 当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点, // 原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为1 sentinel parallel-syncs mymaster 1 //故障转移超时时间为180000毫秒 sentinel failover-timeout mymaster 180000 daemonize yes # ======================================================================== # vim s25-sentinel-26380.conf port 26380 dir /var/redis/data/ logfile "26380.log" sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 daemonize yes # ======================================================================== # s25-sentinel-26381.conf port 26381 dir /var/redis/data/ logfile "26381.log" sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 daemonize yes
登入後複製 -
分别启动3个哨兵进程,以及查看进程信息
# 1.启动哨兵进程 [root@s25linux s25sentinel]# redis-sentinel s25-sentinel-26379.conf [root@s25linux s25sentinel]# redis-sentinel s25-sentinel-26380.conf [root@s25linux s25sentinel]# redis-sentinel s25-sentinel-26381.conf # 2.查看进程信息 [root@s25linux s25sentinel]# ps -ef|grep redis root 20413 1 0 08:45 ? 00:00:00 redis-server *:6379 root 20417 1 0 08:45 ? 00:00:00 redis-server *:6380 root 20422 1 0 08:45 ? 00:00:00 redis-server *:6381 root 20614 1 0 08:55 ? 00:00:00 redis-sentinel *:26379 [sentinel] root 20618 1 0 08:55 ? 00:00:00 redis-sentinel *:26380 [sentinel] root 20622 1 0 08:55 ? 00:00:00 redis-sentinel *:26381 [sentinel]
登入後複製 -
可以检查哨兵的配置文件,以及哨兵的状态
[root@s25linux s25sentinel]# redis-cli -p 26379 info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=s25msredis,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3
登入後複製
6.5.模拟故障
在哨兵搭建好了之后,模拟干掉主库,然后等待主从的一个自动化切换
-
检查6379的进程,杀死后,哨兵能够自动的,进行投票选举,
剩下来的一个slave为新的master,然后重新分配主从关系
故障的修复,修复6379这个redis数据库,且检查它的一个复制关系
6379数据库会重新假如到主从复制,且变为一个新的从库如果你想恢复他们的主从关系,全部kill掉,重新启动,默认就会以配置文件分配主从关系了
7.redis-cluster搭建
7.1.准备节点
准备好6匹马儿,也就是6个redis节点,也就是6个配置文件,redis集群节点最少是使用6个
这6个配置文件,仅仅是端口号的不同而已
-
根目录下创建 s25rediscluster 文件夹用于实验
mkdir /s25rediscluster
登入後複製 -
s25-redis-7000.conf
port 7000 daemonize yes dir "/opt/redis/data" logfile "7000.log" dbfilename "dump-7000.rdb" cluster-enabled yes #开启集群模式 cluster-config-file nodes-7000.conf #集群内部的配置文件 # redis cluster需要16384个slot都正常的时候才能对外提供服务, # 换句话说,只要任何一个slot异常那么整个cluster不对外提供服务。 因此生产环境一般为no cluster-require-full-coverage no
登入後複製 -
使用sed命令快捷生成其他的配置文件
# s25-redis-7001.conf # s25-redis-7002.conf # s25-redis-7003.conf # s25-redis-7004.conf # s25-redis-7005.conf # 使用以下命令快捷创建 sed 's/7000/7001/g' s25-redis-7000.conf > s25-redis-7001.conf sed 's/7000/7002/g' s25-redis-7000.conf > s25-redis-7002.conf sed 's/7000/7003/g' s25-redis-7000.conf > s25-redis-7003.conf sed 's/7000/7004/g' s25-redis-7000.conf > s25-redis-7004.conf sed 's/7000/7005/g' s25-redis-7000.conf > s25-redis-7005.conf
登入後複製 -
创建数据文件夹
mkdir -p "/opt/redis/data"
登入後複製 -
分别启动6个redis节点,且检查进程
redis-server s25-redis-7000.conf redis-server s25-redis-7001.conf redis-server s25-redis-7002.conf redis-server s25-redis-7003.conf redis-server s25-redis-7004.conf redis-server s25-redis-7005.conf
登入後複製 -
此时是不能写入数据的
# 此时你尝试着写入数据,看一看是否能写进去,不能写入数据,还没有分配虚拟槽# 我们仅仅是启动了6个redis节点,准备好了6匹马儿,马儿身上的筐还没分配,你想
登入後複製
7.2.ruby配置
-
直接yum安装ruby解释器ruby和python一样是一个解释性编程语言,日本大神开发的
# gem是ruby的包管理工具 # ruby ===== python # gem ===== pip3 # 方法1:yum安装: yum install ruby -y # 方法2:编译安装的话使用: wget .... tar .... ./configure --prefix=/opt/ruby/ make && make install
登入後複製 -
检查ruby和gem的环境
[root@s25linux s25rediscluster]# ruby -v ruby 2.0.0p648 (2015-12-16) [x86_64-linux] [root@s25linux s25rediscluster]# gem -v 2.0.14.1
登入後複製 -
下载ruby操作redis的模块,用于创建集群
wget http://rubygems.org/downloads/redis-3.3.0.gem
登入後複製 -
用gem安装此模块,ruby就可以操作redis数据库了
gem install -l redis-3.3.0.gem #就如同python的 pip3 install xxxx,不难理解 #可以查看gem有哪些包 gem list -- check redis gem
登入後複製 -
搜索ruby创建redis集群的脚本,然后将其加入到环境变量中
# redis-trib.rb 如何知道它的绝对路径? # which 是搜索PATH环境变量中的命令的绝对路径! # find 才是搜索系统上的文件路径!! find / -name "redis-trib.rb" #默认会在redis数据库的编译安装路径下 # 将创建集群的脚本加入到环境变量,比方说你的脚本位置在 /opt/redis/src/redis-trib.rb,然后将其复制到任一环境变量中。 cp /opt/redis/src/redis-trib.rb /usr/local/bin/
登入後複製 -
一键创建集群,且自动分配槽位,可以写入数据了。集群会自动分配主从关系。
# 每个主节点,有一个从节点,代表--replicas 1 redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
登入後複製 -
此时可以查看及检查下集群的状态
-
查看状态
redis-cli -p 7000 cluster info redis-cli -p 7000 cluster nodes #等同于查看nodes-7000.conf文件节点信息 # 集群主节点状态 redis-cli -p 7000 cluster nodes | grep master # 集群从节点状态 redis-cli -p 7000 cluster nodes | grep slave
登入後複製 -
检查状态
[root@yugo /opt/redis/src 18:42:14]#redis-cli -p 7000 cluster info cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:6 cluster_size:3 cluster_current_epoch:6 cluster_my_epoch:1 cluster_stats_messages_ping_sent:10468 cluster_stats_messages_pong_sent:10558 cluster_stats_messages_sent:21026 cluster_stats_messages_ping_received:10553 cluster_stats_messages_pong_received:10468 cluster_stats_messages_meet_received:5 cluster_stats_messages_received:21026
登入後複製
-
-
进入集群写入数据,查看数据重定向
# 测试写入集群数据,登录集群必须使用redis-cli -c -p 7000必须加上-c参数 redis-cli -c -p 7000 127.0.0.1:7000> set name chao -> Redirected to slot [5798] located at 127.0.0.1:7001 OK 127.0.0.1:7001> exit [root@yugo /opt/redis/src 18:46:07]#redis-cli -c -p 7000 127.0.0.1:7000> ping PONG 127.0.0.1:7000> keys * (empty list or set) 127.0.0.1:7000> get name -> Redirected to slot [5798] located at 127.0.0.1:7001 "chao"
登入後複製工作原理:
redis客户端任意访问一个redis实例,如果数据不在该实例中,通过重定向引导客户端访问所需要的redis实例
以上内容大部分来源于路飞学城于超老师博客,个人做了精简与完善,如有侵权请联系。
推荐学习:Redis视频教程
以上是基礎詳解之Redis的使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

如何清空 Redis 數據:使用 FLUSHALL 命令清除所有鍵值。使用 FLUSHDB 命令清除當前選定數據庫的鍵值。使用 SELECT 切換數據庫,再使用 FLUSHDB 清除多個數據庫。使用 DEL 命令刪除特定鍵。使用 redis-cli 工具清空數據。

要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。

在CentOS系統上,您可以通過修改Redis配置文件或使用Redis命令來限制Lua腳本的執行時間,從而防止惡意腳本佔用過多資源。方法一:修改Redis配置文件定位Redis配置文件:Redis配置文件通常位於/etc/redis/redis.conf。編輯配置文件:使用文本編輯器(例如vi或nano)打開配置文件:sudovi/etc/redis/redis.conf設置Lua腳本執行時間限制:在配置文件中添加或修改以下行,設置Lua腳本的最大執行時間(單位:毫秒)

使用 Redis 指令需要以下步驟:打開 Redis 客戶端。輸入指令(動詞 鍵 值)。提供所需參數(因指令而異)。按 Enter 執行指令。 Redis 返迴響應,指示操作結果(通常為 OK 或 -ERR)。

使用Redis進行鎖操作需要通過SETNX命令獲取鎖,然後使用EXPIRE命令設置過期時間。具體步驟為:(1) 使用SETNX命令嘗試設置一個鍵值對;(2) 使用EXPIRE命令為鎖設置過期時間;(3) 當不再需要鎖時,使用DEL命令刪除該鎖。

使用 Redis 命令行工具 (redis-cli) 可通過以下步驟管理和操作 Redis:連接到服務器,指定地址和端口。使用命令名稱和參數向服務器發送命令。使用 HELP 命令查看特定命令的幫助信息。使用 QUIT 命令退出命令行工具。

Redis數據過期策略有兩種:定期刪除:定期掃描刪除過期鍵,可通過 expired-time-cap-remove-count、expired-time-cap-remove-delay 參數設置。惰性刪除:僅在讀取或寫入鍵時檢查刪除過期鍵,可通過 lazyfree-lazy-eviction、lazyfree-lazy-expire、lazyfree-lazy-user-del 參數設置。
