批量删除Key,Redis 中有删除单个 Key 的指令 DEL,但好像没有批量删除 Key 的指令,不过我们可以借助 Linux 的 xargs 指令来完成这个动作。
redis-cli keys "*" | xargs redis-cli del //如果redis-cli没有设置成系统变量,需要指定redis-cli的完整路径 //如:/opt/redis/redis-cli keys "*" | xargs /opt/redis/redis-cli del
redis-cli -a password keys "*" | xargs redis-cli -a password del
//下面的命令指定数据序号为0,即默认数据库 redis-cli -n 0 keys "*" | xargs redis-cli -n 0 del
//删除当前数据库中的所有Key flushdb //删除所有数据库中的key flushall
注:keys 指令可以进行模糊匹配,但如果 Key 含空格,就匹配不到了,暂时还没发现好的解决办法。
在Redis中使用复制功能非常容易,只需要在从数据库的配置文件中加入“slaveof 主数据库IP 主数据库端口”即可,如果主数据库需要授权密码,还需要在从数据库的配置文件中加入主数据库的授权密码"masterauth 主数据库密码",主数据库无需进行任何配置。
原理
当一个从数据库启动后,会向主数据库发送SYNC命令,主数据库接收到SYNC命令后会开始在后台保存快照(即RDB持久化的过程),并将保存期间接收到的命令缓存起来。当快照完成后,Redis会将快照文件和所有缓存的命令发送给从数据库。从数据库收到后,会载入快照文件并执行收到的缓存的命令。当主从数据库断开重连后会重新执行上述操作,不支持断点续传。
拓扑图
/usr/local/redis-stable/bin/redis-server /usr/local/redis-stable/etc/redis.conf &
Redis的强劲性能很大程度上是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中以某种形式同步到硬盘中,这一过程就是持久化。
Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合使用。
RDB方式
RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并存储在硬盘上。进行快照的条件可以由用户在配置文件中自定义,由两个参数构成:时间和改动的键的个数。当在指定的时间内被更改的键的个数大于指定的数值时就会进行快照。RDB是Redis默认采用的持久化方式,在配置文件中已经预置了3个条件:
save 900 1 save 300 10 save 60 10000
save参数指定了快照条件,可以存在多个条件,条件之间是“或”的关系。如上所说,save 900 1的意思是在15分钟(900秒钟)内有至少一个键被更改则进行快照。如果想要禁用自动快照,只需要将所有的save参数删除即可。
Redis默认会将快照文件存储在当前目录的dump.rdb文件中,可以通过配置dir和dbfilename两个参数分别指定快照文件的存储路径和文件名。
wget http://download.redis.io/releases/redis-stable.tar.gz tar zxvf redis-stable.tar.gz -C /usr/local/ cd /usr/local/redis-stable/ make && make install
mkdir /usr/local/redis-stable/bin mkdir /usr/local/redis-stable/etc cd /usr/local/redis-stable/src/ mv redis-server redis-cli redis-sentinel redis-check-dump redis-benchmark redis-check-aof mkreleasehdr.sh ../bin cd .. mv redis.conf etc/
/usr/local/redis-stable/bin/redis-server /usr/local/redis-stable/etc/redis.conf &
netstat -tnl
如果看到下面的显示说明,redis启动成功了,redis的默认端口为6379
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN
/usr/local/redis-stable/bin/redis-cli
/usr/local/redis-stable/bin/redis-cli shutdown #或 pkill redis-server #或 killall redis-server