REDIS安装及操作笔记

目录

一、Redis介绍... 1

二、Redis部署模式... 1

1. 单机模式... 1

2. 主从模式... 2

3. 哨兵模式... 2

4. 集群模式... 3

三、Redis部署... 4

1. 单机模式部署... 4

2. 集群模式(三主三从)部署... 5

①自动化搭建Redis三主集群脚本... 5

②生产环境Redis集群... 6

③以700节点为例的配置信息... 7

四、Redis高可用... 7

五、Redis数据持久化... 8

六、Redis常见运维操作... 9

a.创建集群... 9

b.访问集群... 9

c.启动节点的Redis服务... 9

d.关闭节点的Redis服务... 10

e.检查集群状态... 10

f.删除从节点再重新加入集群... 10

g.删除一个主节点... 11

h.添加一个主节点... 13

i.其它操作... 15

j.Redis一个主节点挂掉... 16

k.Redis一个从节点挂掉... 17

七、Redis运维备忘... 18

1.查看授权码信息... 18

2.批量删除key. 18

一、Redis介绍

   Redis(Remote Dictionary Server) 远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

   Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与Memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

   Redis六大特点: 速度快,广泛语言支持,持久化,多种数据结构,主从复制,高可用与分布式

官网:Download | Redis

二、Redis部署模式

   Redis 常见几种部署模式:单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式。

   1. 单机模式

Redis 单副本,采用单个 Redis 节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。

优点:

①架构简单,部署方便。

②高性价比:缓存使用时无需备用节点(单实例可用性可以用 supervisor 或 crontab 保证),当然为了满足业务的高可用性,也可以牺牲一个备用节点,但同时刻只有一个实例对外提供服务,高性能。

缺点:

①不保证数据的可靠性。

②在缓存使用,进程重启后,数据丢失,即使有备用的节点解决高可用性,但是仍然不能解决缓存预热问题,因此不适用于数据可靠性要求高的业务。

③高性能受限于单核 CPU 的处理能力(Redis 是单线程机制),CPU 为主要瓶颈,所以适合操作命令简单,排序、计算较少的场景。也可以考虑用 Memcached 替代。

   2. 主从模式

Redis 采用主从(可以多从)部署结构,相较于单副本而言最大的特点就是主从实例间数据实时同步,并且提供数据持久化和备份策略。主从实例部署在不同的物理服务器上,根据公司的基础环境配置,可以实现同时对外提供服务和读写分离策略。

优点:

①高可靠性:一方面,采用双机主备架构,能够在主库出现故障时自动进行主备切换,从库提升为主库提供服务,保证服务平稳运行;另一方面,开启数据持久化功能和配置合理的备份策略,能有效的解决数据误操作和数据异常丢失的问题。

②读写分离策略:从节点可以扩展主库节点的读能力,有效应对大并发量的读操作。

  

缺点:

①故障恢复复杂,如果没有 RedisHA 系统(需要开发),当主库节点出现故障时,需要手动将一个从节点晋升为主节点,同时需要通知业务方变更配置,并且需要让其它从库节点去复制新主库节点,整个过程需要人为干预,比较繁琐。

②主库的写能力受到单机的限制,可以考虑分片。

③主库的存储能力受到单机的限制,可以考虑 Pika。

④原生复制的弊端在早期的版本中也会比较突出,如:Redis 复制中断后,Slave 会发起 psync,此时如果同步不成功,则会进行全量同步,主库执行全量备份的同时可能会造成毫秒或秒级的卡顿;又由于 COW 机制,导致极端情况下的主库内存溢出,程序异常退出或宕机;主库节点生成备份文件导致服务器磁盘 IO 和 CPU(压缩)资源消耗;发送数 GB 大小的备份文件导致服务器出口带宽暴增,阻塞请求,建议升级到最新版本。

   3. 哨兵模式

Redis Sentinel 是 2.8 版本后推出的原生高可用解决方案,其部署架构主要包括两部分:Redis Sentinel 集群和 Redis 数据集群。其中 Redis Sentinel 集群是由若干 Sentinel 节点组成的分布式集群,可以实现故障发现、故障自动转移、配置中心和客户端通知。Redis Sentinel 的节点数量要满足 2n+1(n>=1)的奇数个。

优点:

①Redis Sentinel 集群部署简单。

②能够解决 Redis 主从模式下的高可用切换问题。

③很方便实现 Redis 数据节点的线形扩展,轻松突破 Redis 自身单线程瓶颈,可极大满足 Redis 大容量或高性能的业务需求。

④可以实现一套 Sentinel 监控一组 Redis 数据节点或多组数据节点。

缺点:

①部署相对 Redis 主从模式要复杂一些,原理理解更繁琐。

②资源浪费,Redis 数据节点中 slave 节点作为备份节点不提供服务。

③Redis Sentinel 主要是针对 Redis 数据节点中的主节点的高可用切换,对 Redis 的数据节点做失败判定分为主观下线和客观下线两种,对于 Redis 的从节点有对节点做主观下线操作,并不执行故障转移。

④不能解决读写分离问题,实现起来相对复杂。

   4. 集群模式

Redis Cluster 是 3.0 版后推出的 Redis 分布式集群解决方案,主要解决 Redis 分布式方面的需求,比如,当遇到单机内存,并发和流量等瓶颈的时候,Redis Cluster 能起到很好的负载均衡的目的。Redis Cluster 集群节点最小配置 6 个节点以上(3 主 3 从),其中主节点提供读写操作,从节点作为备用节点,不提供请求,只作为故障转移使用。Redis Cluster 采用虚拟槽分区,所有的键根据哈希函数映射到 0~16383 个整数槽内,每个节点负责维护一部分槽以及槽所印映射的键值数据。

优点:

①无中心架构。

②数据按照 slot 存储分布在多个节点,节点间数据共享,可动态调整数据分布。

③可扩展性:可线性扩展到 1000 多个节点,节点可动态添加或删除。

④高可用性:部分节点不可用时,集群仍可用。通过增加 Slave 做 standby 数据副本,能够实现故障自动 failover,节点之间通过 gossip 协议交换状态信息,用投票机制完成 Slave 到 Master 的角色提升。

⑤降低运维成本,提高系统的扩展性和可用性。

缺点:

①Client 实现复杂,驱动要求实现 Smart Client,缓存 slots mapping 信息并及时更新,提高了开发难度,客户端的不成熟影响业务的稳定性。目前仅 JedisCluster 相对成熟,异常处理部分还不完善,比如常见的“max redirect exception”。

②节点会因为某些原因发生阻塞(阻塞时间大于 clutser-node-timeout),被判断下线,这种 failover 是没有必要的。

③数据通过异步复制,不保证数据的强一致性。

多个业务使用同一套集群时,无法根据统计区分冷热数据,资源隔离性较差,容易出现相互影响的情况。

④Slave 在集群中充当“冷备”,不能缓解读压力,当然可以通过 SDK 的合理设计来提高 Slave 资源的利用率。

⑤Key 批量操作限制,如使用 mset、mget 目前只支持具有相同 slot 值的 Key 执行批量操作。对于映射为不同 slot 值的 Key 由于 Keys 不支持跨 slot 查询,所以执行 mset、mget、sunion 等操作支持不友好。

⑥Key 事务操作支持有限,只支持多 key 在同一节点上的事务操作,当多个 Key 分布于不同的节点上时无法使用事务功能。

⑦Key 作为数据分区的最小粒度,不能将一个很大的键值对象如 hash、list 等映射到不同的节点。

⑧不支持多数据库空间,单机下的 redis 可以支持到 16 个数据库,集群模式下只能使用 1 个数据库空间,即 db 0。

⑨复制结构只支持一层,从节点只能复制主节点,不支持嵌套树状复制结构。

   5. 第三方模式(使用较少)

   

三、Redis部署

   1. 单机模式部署

    a. 从官网下载需要的Redis版本并解压

[root@centos7min3 opt]# wget http://download.redis.io/releases/redis-5.0.7.tar.gz

[root@centos7min3 opt]# tar xzf redis-5.0.7.tar.gz

b. 检查安装gcc与tcl依赖包

[root@centos7min3 opt]# yum -y install gcc

[root@centos7min3 opt]# yum -y install tcl

c. 编译

[root@centos7min3 redis-5.0.7]# make

如果在make时,Redis报错:

zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory

>① make MALLOC=libc

>② 如果想用jemalloc,安装jemalloc即可

$ yum install jemalloc

$ rpm -ql jemalloc

/usr/bin/jemalloc.sh

/usr/lib64/libjemalloc.so.1

或者

https://github.com/jemalloc/jemalloc/releases/download/4.2.1/jemalloc-4.2.1.tar.bz2

$ tar xvf jemalloc-4.2.1.tar.bz2

$ cd jemalloc-4.2.1

$ ./configure --prefix=/usr/local/jemalloc

$ make && make install

make MALLOC=/usr/local/jemalloc/lib

d. 指定安装路径进行安装

[root@centos7min3 redis-5.0.7]# make PREFIX=/usr/local/redis install

e. 启动Redis服务

[root@centos7min3 bin]# ./redis-server

或者

[root@centos7min3 src]# ./redis-server

 

 

   2. 集群模式(三主三从)部署

集群搭建需要的环境:Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。

   自动化搭建Redis三主集群脚本

###采用源码包搭建redis cluster三主集群###
############################
#!/bin/bash

###在一台服务器上搭建redis三主集群: 192.168.16.17:7001、192.168.16.17:7002、192.168.16.17:7003
###Redis 的几种常见使用方式包括:
  #单机模式
  #主从模式
  #哨兵模式(sentinel)
  #集群模式(cluster)

echo "Please download the version of redis you need from http://download.redis.io/releases/"
## for example: redis-5.0.7.tar.gz

dir_package='/md5'
install_package=${dir_package}'/redis-5.0.4.tar.gz'
package_version='redis-5.0.4'

## decompress the install package
package_tar_name=${install_package##*/}
package_name=${package_tar_name%%.tar*}
tar zxvf ${package_tar_name} -C ${dir_package}/
chown -R root:root ${package_name}

## compile and install
cd ${dir_package}/${package_name}/
pwd   
make
make install

## create the config-files
cd ${dir_package}/${package_name}/
for (( i=7001;i<=7003;i++ ))
do
   mkdir -p cluster/${i}
   cp ${dir_package}/${package_name}/redis.conf   cluster/${i}/
   cp ${dir_package}/${package_name}/src/redis-server  cluster/${i}/
   cp ${dir_package}/${package_name}/src/redis-cli   cluster/${i}/
   sed -i "s/bind 127.0.0.1/bind 192.168.16.17/g" cluster/${i}/redis.conf
   sed -i "s/daemonize no/daemonize yes/g"  cluster/${i}/redis.conf
   sed -i "s/port 6379/port ${i}/g"    cluster/${i}/redis.conf
   #sed -i "s/# requirepass foobared/requirepass 1234***/g"   cluster/${i}/redis.conf   ##搭建集群时把它注释掉,搭建成功后恢复并重启redis服务
   sed -i "s/pidfile \\/var\\/run\\/redis_6379.pid/pidfile \\${dir_package}\\/${package_name}\\/cluster\\/${i}\\/redis_${i}.pid/g"  cluster/${i}/redis.conf
   sed -i "s/# cluster-enabled yes/cluster-enabled yes/g"  cluster/${i}/redis.conf
   sed -i "s/# cluster-config-file nodes-6379.conf/cluster-config-file \\${dir_package}\\/${package_name}\\/cluster\\/${i}\\/nodes-${i}.conf/g"  cluster/${i}/redis.conf
   sed -i "s/logfile \"\"/logfile \\${dir_package}\\/${package_name}\\/cluster\\/${i}\\/redis_${i}.log/g"   cluster/${i}/redis.conf
   sed -i "s/dir .\//dir \\${dir_package}\\/${package_name}\\/cluster\\/${i}/g"  cluster/${i}/redis.conf 
done 

## start the redis server with 3 different config-files
${dir_package}/${package_name}/cluster/7001/redis-server  ${dir_package}/${package_name}/cluster/7001/redis.conf
sleep 3s
${dir_package}/${package_name}/cluster/7002/redis-server  ${dir_package}/${package_name}/cluster/7002/redis.conf
sleep 3s
${dir_package}/${package_name}/cluster/7003/redis-server  ${dir_package}/${package_name}/cluster/7003/redis.conf
sleep 3s

for (( j=7001;j<=7003;j++ ))
do
  if [ `netstat -anp | grep ${j} | wc -l` -eq 0 ]
    then
      echo "redis ${j} started failed"
    else
      echo "redis ${j} started successfully"
  fi
done

## create redis cluster
## 建议手动创建redis集群,命令参考如下:
①  ##三主集群创建
##${dir_package}/${package_name}/cluster/7001/redis-cli --cluster  create 192.168.16.17:7001 192.168.16.17:7002 192.168.16.17:7003    
## Can I set the above configuration? (type 'yes' to accept):    ———— 你需要输入yes以保存集群的配置
②  ##三主三从集群创建
##${dir_package}/${package_name}/cluster/7001/redis-cli create 192.168.16.17:7001 192.168.16.17:7002 192.168.16.17:7003 192.168.16.17:7004 192.168.16.17:7005 192.168.16.17:7006  --cluster-replicas 1                              

## 访问集群
## ${dir_package}/${package_name}/cluster/7001/redis-cli -h 192.168.16.17 -p 7001 -c
## 如果设置了密码requirepass,需要重启redis服务(无需再建集群)才可以通过以下带密码参数的方式访问集群
## ${dir_package}/${package_name}/cluster/7001/redis-cli -h 192.168.16.17 -p 7001 -c -a '1234***'

## [root@centos7-min7 md5]# ps -ef | grep redis | grep -v grep | awk '{print $2}' | xargs kill -9

   ②生产环境Redis集群

主节点

对应从节点

192.168.0.3:7000

192.168.0.13:7005

192.168.0.2:7003

192.168.0.35:7001

192.168.0.14:7004

192.168.0.72:7002

Redis节点

Redis部署位置        (磁盘空间大于1T)

192.168.0.3:7000

/data/opt/redis-5.0.4

192.168.0.35:7001

/opt/redis/redis-5.0.4

192.168.0.72:7002

/data/redis/redis-5.0.4

192.168.0.2:7003

/data/opt/redis-5.0.4

192.168.0.14:7004

/data/opt/redis-5.0.4

192.168.0.13:7005

/data/opt/redis-5.0.4

  

 

③以7000节点为例的配置信息

[hjrypt@web redis-5.0.4]$ vi cluster/7000/redis.conf

bind 192.168.0.3

port 7000

daemonize yes

pidfile /data/opt/redis-5.0.4/cluster/7000/redis_7000.pid

logfile /data/opt/redis-5.0.4/cluster/7000/redis_7000.log

databases 16

#   save ""

save 900 1               ——设置RDB持久化方式

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir ./

masterauth 1234***  ——这个是自动生成的,最初配置的时候不用添加这个

requirepass 1234***

maxmemory 15G   ——根据实际内存设置

appendonly yes           —— 设置AOF持久化方式

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble yes  ——启用RDB-AOF混合持久化

cluster-enabled yes

cluster-config-file nodes-7000.conf

cluster-node-timeout 15000

四、Redis高可用

Redis高可用常见的有两种方式:

  • 主从复制(Replication-Sentinel模式)

主节点(master)负责读写,从节点(slave)负责读。这个系统的运行依靠三个主要的机制:

①当一个 master 实例和一个 slave 实例连接正常时, master 会发送一连串的命令流来保持对 slave 的更新,以便于将自身数据集的改变复制给 slave ,包括客户端的写入、key 的过期或被逐出等等。

②当 master 和 slave 之间的连接断开之后,因为网络问题、或者是主从意识到连接超时, slave 重新连接上 master 并会尝试进行部分重同步:这意味着它会尝试只获取在断开连接期间内丢失的命令流。

③当无法进行部分重同步时, slave 会请求进行全量重同步。这会涉及到一个更复杂的过程,例如 master 需要创建所有数据的快照,将之发送给 slave ,之后在数据集更改时持续发送命令流到 slave 。

  • Redis集群(Redis-Cluster模式) ——主从集群

redis集群三主三从配置的作用:

redis集群不是实现高可用的一个方式吗?为啥一个节点挂掉会影响业务正常运行?

那就是因为没有从节点呀,如果存在从节点的情况下,主节点出现问题时会自动将从节点转为主节点。集群的状态不受影响,这样业务就不受影响呀。

你现在没有从节点,如果主节点挂掉了,那么数据存储都有问题啦,集群状态受到影响,自然影响业务的正常运行。

五、Redis数据持久化

redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。

RDB:RDB 持久化机制,是对 Redis 中的数据执行周期性的持久化。

AOF:AOF 机制对每条写入命令作为日志,以 append-only 的模式写入一个日志文件中,因为这个模式是只追加的方式,所以没有任何磁盘寻址的开销,所以很快,有点像Mysql中的binlog。

RDB>

RDB对Redis的性能影响非常小,是因为在同步数据的时候他只是fork了一个子进程去做持久化的,而且他在数据恢复的时候速度比AOF来的快。

RDB都是快照文件,都是默认五分钟甚至更久的时间才会生成一次,这意味着你这次同步到下次同步这中间五分钟的数据都很可能全部丢失掉。AOF则最多丢一秒的数据,数据完整性上高下立判。还有就是RDB在生成数据快照的时候,如果文件很大,客户端可能会暂停几毫秒甚至几秒

AOF>

RDB五分钟一次生成快照,但是AOF是一秒一次去通过一个后台的线程fsync操作,那最多丢这一秒的数据。

AOF在对日志文件进行操作的时候是以append-only的方式去写的,他只是追加的方式写数据,自然就少了很多磁盘寻址的开销了,写入性能惊人,文件也不容易破损。

AOF的日志是通过一个叫非常可读的方式记录的,这样的特性就适合做灾难性数据误删除的紧急恢复了,比如公司的实习生通过flushall清空了所有的数据,只要这个时候后台重写还没发生,你马上拷贝一份AOF日志文件,把最后一条flushall命令删了就完事了。

六、Redis常见运维操作

a.创建集群

在一个主节点执行以下命令创建三主三从集群

##${dir_package}/${package_name}/cluster/7001/redis-cli

create 192.168.16.17:7001 192.168.16.17:7002 192.168.16.17:7003 192.168.16.17:7004 192.168.16.17:7005 192.168.16.17:7006   --cluster-replicas 1

在一个主节点执行以下命令创建三主集群

##${dir_package}/${package_name}/cluster/7001/redis-cli

create 192.168.16.17:7001 192.168.16.17:7002 192.168.16.17:7003

b.访问集群

## ${dir_package}/${package_name}/cluster/7001/redis-cli -h 192.168.16.17 -p 7001 -c

## 如果设置了密码requirepass,需要重启redis服务(无需再建集群)才可以通过以下带密码参数的方式访问集群

## ${dir_package}/${package_name}/cluster/7001/redis-cli -h 192.168.16.17 -p 7001 -a 'QwE#7a8B' -c

  • cluster info
  • cluster nodes
  • cluster help

c.启动节点的Redis服务

[hjrypt@webdp redis-5.0.4]$ src/redis-server cluster/7000/redis.conf

d.关闭节点的Redis服务

[hjrypt@webdp redis-5.0.4]$ src/redis-cli -h 192.168.0.3 -p 7000 -a '1234***' shutdown

e.检查集群状态

[hjrypt@webdp ~]$ /data/opt/redis-5.0.4/src/redis-cli --cluster check 192.168.0.3:7000 -a '1234***

 

f.删除从节点再重新加入集群

将fail状态的Slave节点删除并重新通过之前对应的主节点再次加入集群

192.168.0.72:7002 redis从节点挂掉

① 查看集群节点 cluster nodes

② 删除fail节点 cluster help

cluster forget ID

或者 ./redis-cli  --cluster  del-node  192.168.0.13:7005  nodeID

③ 根据对应主节点(192.168.0.2:7003),把从节点(192.168.0.72:7002 )重新加入redis集群

src/redis-cli --cluster add-node --cluster-slave --cluster-master-id cc1...9cb3 192.168.0.72:7002 192.168.0.2:7003 -a '1234***'

 

g.删除一个主节点

首先把要删除master节点的 slot卡槽全部提取到别的master节点上

查看集群详情

删除 6307 master节点

 

h.添加一个主节点

./redis-cli add-node new_host:new_port existing_host:existing_port
(任意节点与端口)
./redis-cli --cluster  add-node 192.168.142.128:7007 192.168.142.128:7000

 

给新加入节点分配空间槽

[hjrypt@jiankong src]$ ./redis-cli --cluster reshard 192.168.0.2:7003 -a '1234***'

./redis-cli reshard 192.168.142.128:7007

问你是否从原有的1-16384个槽中分配多少到新的主节点我们这里分配4000为例回车
然后紧接着会询问你给id为谁的主节点分配,我们这里copy这个id就行
询问你是从所有的空间去给这个节点分配空间还是从某一个节点分配
我这里输入all  回车继续

然后会给你分配出一个分配计划,输入yes开始分配。完成ok

我们再来看下7007已经分配了4000个空间槽 。

i.其它操作

检查集群状态:

[hjrypt@hjrhosts1250 src]$ ./redis-cli --cluster check 192.168.0.72:7002 -a '1234***'

修复集群:

[hjrypt@hjrhosts1250 src]$ ./redis-cli --cluster fix 192.168.0.72:7002 -a '1234***'

删除或者添加了集群主节点后一般需要reshard slot信息

cluster info 查看哈希槽信息

[hjrypt@jiankong src]$ ./redis-cli --cluster reshard 192.168.0.92:7003 -a '1234***'

cluster nodes 查看redis节点信息,slot分配很乱(如图),可以考虑rebance集群

  • rebalance前

[hjrypt@webdp src]$ ./redis-cli --cluster rebalance 192.168.0.2:7003 -a '1234***'

  • rebalance后

j.Redis一个主节点挂掉

采用处理方式:关闭一个REDIS主节点7006,待其对应slave节点7003升级为主节点后,再重启7006节点,访问集群,查看集群状态

[root@centos7-min7 7006]# /md5/redis-5.0.4/src/redis-server redis.conf

[root@centos7-min7 7006]# /md5/redis-5.0.4/src/redis-cli  -h 192.168.16.17 -p 7006

 

k.Redis一个从节点挂掉

> 前置操作:查看Redis集群节点状态,关闭其中一个Redis从节点服务, 收到Prometheus告警邮件

①查看集群节点 cluster nodes

②关闭一个Redis从节点

src/redis-cli -h 192.168.0.72 -p 7002 -a ‘' shutdown

  • 修复操作:删除fail节点,根据对应主从节点关系,将从节点重新加入集群

①删除fail节点 cluster help

cluster forget ID

②根据对应主节点(192.168.0.92:7003),把从节点(192.168.0.72:7002 )重新加入Redis集群

src/redis-cli --cluster add-node --cluster-slave --cluster-master-id cc1...9cb3 192.168.0.72:7002 192.168.0.92:7003 -a '1234***'

> 修复结果:Redis集群恢复正常

七、Redis运维备忘

Redis参考手册:Redis 教程 | 菜鸟教程

1.查看信息

192.168.0.213:7005> smembers auth_token:MOP419375:300012004603

 

2.批量删除key

redis中没有直接根据正则表达式删除key的命令,只有del key1 key2...命令

但是redis中有通过正则表达式获取key的命令:keys "正则表达式"

[root@localhost redis7001]# redis-cli -h 192.169.1.71 -p 7001 -a 123456 keys em* | xargs -r -t -n1 ./redis-cli -h 192.169.1.71 -p 7001 -a 123456 del

补充1:xargs命令后需加上参数-r,不然当keys的数量为0时,就会报错 (error) ERR wrong number of arguments for ‘del’ command

补充2:xargs命令后需加上参数-n1,不然当集群情况keys的数量大于1时,可能会报错 (error) CROSSSLOT Keys in request don’t hash to the same slot

补充3:不加-t也可以,加上-t会输出每次删除的内容,不加则不输出删除的内容,但还是会输出每次删除的key的数量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis全套学习笔记.pdf》是一本关于Redis数据库的学习笔记,内容涵盖了Redis的基本概念、原理、操作、应用等方面的知识。 首先,Redis是一种开源的内存数据库,它具有高性能、高可用性和高扩展性的特点。它可以用于缓存、消息队列、实时排行榜等场景,广泛应用于Web应用开发、大数据存储和分析等领域。 在学习笔记中,首先介绍了Redis的基本概念,包括数据结构、持久化、单线程架构等方面的知识。数据结构包括字符串、哈希表、列表、集合和有序集合等,笔记详细介绍了它们的特点和使用方法。持久化方面,介绍了RDB快照和AOF日志两种持久化方式的原理和使用方法。同时,笔记也解释了为什么Redis选择单线程架构以及如何充分利用单线程的优势。 其次,学习笔记还包括了Redis的常用操作,例如数据的增删改查、事务和管道操作、过期时间设置等。这些操作是使用Redis进行开发和使用时必不可少的知识点,通过学习笔记可以快速掌握这些操作的使用方法。 此外,学习笔记还涉及了Redis的高级应用,如发布订阅、Lua脚本、事件通知等。这些高级应用可以帮助开发者更好地利用Redis的功能和特性,提升系统的性能和稳定性。 综上所述,《Redis全套学习笔记.pdf》是一本全面介绍Redis的学习资料,通过学习这本笔记,读者可以了解Redis的基本概念和原理,掌握Redis的常用操作和高级应用,从而更好地使用Redis进行开发和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值