【数据库】Redis介绍与安装

目录

一、Redis基础

1.1 关系型数据库与非关系型数据库

1.2 redis特性

1.3 单线程

  1.4 redis与memcached对比

1.5 redis的应用场景

 1.6 redis实现缓存的流程

二、Redis的安装

2.1 依赖包

2.2 编译安装

2.3 启动

2.4 redis6版本须知

 三、Redis多实例

3.1 应用场景

3.2 配置演示

四、Redis的配置优化

五、Redis命令

5.1 config临时配置

5.2 INFO

5.3 select

5.4 keys

5.5 mest

5.6 bgsave

5.7 dbsize

5.8 flushdb

5.9 flushall


一、Redis基础

1.1 关系型数据库与非关系型数据库

数据库主要分为两大类:关系型数据库与 NoSQL 数据库。

关系型数据库,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据。主流的 MySQL、Oracle、MS SQL Server 和 DB2 都属于这类传统数据库。

NoSQL 数据库,全称为 Not Only SQL,意思就是适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。主要分为临时性键值存储(memcached、Redis)、永久性键值存储(ROMA、Redis)、面向文档的数据库(MongoDB、CouchDB)、面向列的数据库(Cassandra、HBase),每种 NoSQL 都有其特有的使用场景及优点。

Oracle,mysql 等传统的关系数据库非常成熟并且已大规模商用,为什么还要用 NoSQL 数据库呢?

主要是由于随着互联网发展,数据量越来越大,对性能要求越来越高,传统数据库存在着先天性的缺陷,即单机(单库)性能瓶颈,并且扩展困难。这样既有单机单库瓶颈,却又扩展困难,自然无法满足日益增长的海量数据存储及其性能要求,所以才会出现了各种不同的 NoSQL 产品,NoSQL 根本性的优势在于在云计算时代,简单、易于大规模分布式扩展,并且读写性能非常高。

RDBMS和NOSQL的特点及优缺点:  

(一)、关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型 (二维表格模型) 基础上,一般面向于记录。 SQL语句 (标准数据查询语言) 就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。 主流的关系型数据库包括Oracle、MySQL、SQL Server、Microsoft Access、DB2等。

(二)、非关系型数据库 NoSQL (NoSQL=NotOnlySQL),意思是“不仅仅是SQL”,是非关系型数据库的总称。 除了主流的关系型数据库外的数据库,都认为是非关系型。 主流的 NoSQL 数据库有Redis、 MongBD、 Hbase、 Memcached 等。

(三)、关系型数据库和非关系型数据库区别 (1)、数据存储方式不同 关系型和非关系型数据库的主要差异是数据存储的方式。关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。 与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。 ① 关系型:依赖于关系模型E-R图,同时以表格式的方式存储数据 ② 非关系型:除了以表格形式存储之外,通常会以大块的形式组合在一起进行存储数据

(2)、扩展方式不同 SQL和NoSQL数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。 要支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来克服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。 而NoSQL数据库是横向扩展的。因为非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器 (节点) 来分担负载。 ① 关系:纵向(天然表格式) ② 非关:横向(天然分布式)

(3)、对事务性的支持不同 如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是最佳选择。SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。 虽然NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。 ① 关系型:特别适合高事务性要求和需要控制执行计划的任务 ② 非关系:此处会稍显弱势,其价值点在于高扩展性和大数据量处理方面

(四)、非关系型数据库产生背景 可用于应对Web2.0纯动态网站类型的三高问题。 (1) High performance-------对数据库高并发读写需求 (2) HugeStorage--------------对海量数据高效存储与访问需求 (3) High Scalability && High Availability------- 对数据库高可扩展性与高可用性需求

关系型数据库和非关系型数据库都有各自的特点与应用场景,两者的紧密结合将会给Web2.0的数据库发展带来新的思路。让关系数据库关注在关系上,非关系型数据库关注在存储上。例如,在读写分离的MySQL数据库环境中,可以把经常访问的数据存储在非关系型数据库中,提升访问速度。 Mysql 高热数据——》redis web ——》redis ——》mysql CPU——》内存/缓存 ——》磁盘

总结: 关系型数据库: 实例–>数据库–>表(table)–>记录行(row)、数据字段(column)——》存储数据

非关系型数据库: 实例–>数据库–>集合(collection) -->键值对(key-value) workdir=/usr/local/mysql

非关系型数据库不需要手动建数据库和集合(表)。

1.2 redis特性

  • 速度快: 10W QPS,基于内存,C语言实现

  • 单线程

  • 持久化

  • 支持多种数据结构

  • 支持多种编程语言

  • 功能丰富: 支持Lua脚本,发布订阅,事务,pipeline等功能

  • 简单: 代码短小精悍(单机核心代码只有23000行左右),单线程开发容易,不依赖外部库,使用简单

  • 主从复制

  • 支持高可用和分布式

1.3 单线程

Redis在6.0版本之前一直是单线程方式处理用户的请求

单线程为何如此快?

  • 纯内存

  • 非阻塞

  • 避免线程切换和竞态消耗

Redis为什么这么快? 1、Redis是一款纯内存结构,避免了磁盘I/O等耗时操作。 2、Redis命令处理的核心模块为单线程,减少了锁竞争,以及频繁创建线程和销毁线程的代价,减少了线程上下文切换的消耗。 3、采用了 I/O 多路复用机制,大大提升了并发效率。

注:在 Redis 6.0 中新增加的多线程也只是针对处理网络请求过程采用了多线性,而数据的读写命令,仍然是单线程处理的。

注意事项:

  • 一次只运行一条命令

  • 拒绝长(慢)命令:keys, flushall, flushdb, slow lua script, mutil/exec, operate big value(collection)

  • 其实不是单线程: 早期版本是单进程单线程,3版本后实际还有其它的线程, 实现特定功能,如: fysnc file descriptor,close file descriptor

  1.4 redis与memcached对比

memcachedredis
类型key-valuekey-value
过期策略支持支持
数据类型单一数据类型五大数据类型
持久化不支持支持
主从复制不支持支持
虚拟内存不支持支持

1.5 redis的应用场景

  • Session 共享:常见于web集群中的Tomcat或者PHP中多web服务器session共享

  • 缓存:数据查询、电商网站商品信息、新闻内容

  • 计数器:访问排行榜、商品浏览数等和次数相关的数值统计场景

  • 微博/微信社交场合:共同好友,粉丝数,关注,点赞评论等

  • 消息队列:ELK的日志缓存、部分业务的订阅发布系统

  • 地理位置: 基于GEO(地理信息定位),实现摇一摇,附近的人,外卖等功能

 1.6 redis实现缓存的流程

数据更新操作流程:

数据读操作流程:

二、Redis的安装

2.1 依赖包

#centos:
yum -y install gcc jemalloc-devel systemd-devel
#ubuntu:
apt -y install make gcc libjemalloc-dev libsystemd-dev

2.2 编译安装

#选择安装包下载路径
cd /opt
#下载安装包
wget http://download.redis.io/releases/redis-6.2.6.tar.gz
#解压
tar xvf redis-6.2.6.tar.gz

cd redis-6.2.6/
#指定redis安装目录
make USE_SYSTEMD=yes PREFIX=/apps/redis install

#配置变量
echo 'PATH=/apps/redis/bin:$PATH' > /etc/profile.d/redis.sh
. /etc/profile.d/redis.sh

#创建配置文件、日志、数据等目录
mkdir /apps/redis/{etc,log,data,run}
#复制源码包中配置文件
cp redis.conf /apps/redis/etc/

#添加redis用户 -r为指定系统用户
useradd -r -s /sbin/nologin redis
#设置目录权限
chown -R redis.redis /apps/redis/

#准备service文件
vim /usr/lib/systemd/system/redis.service

[Unit]
Description=Redis persistent key-value database
After=network.target

[Service]
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
ExecStop=/bin/kill -s QUIT $MAINPID
#Type=notify 如果支持systemd可以启用此行
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target

#################安装完毕##################

2.3 启动

systemctl daemon-reload
systemctl start redis

2.4 redis6版本须知

!!!此方法为无法正常安装的补充,切忌可以正常安装的话,不要乱更新gcc版本!!!

centos7 的 gcc编译器过旧会出现以下报错 升级后再次编译可以通过

gcc -v # 查看gcc版本
yum -y install centos-release-scl # 升级到9.1版本
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash

以上为临时启用,如果要长期使用gcc 9.1的话:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

 三、Redis多实例

3.1 应用场景

测试环境中经常使用多实例,需要指定不同实例的相应的端口,配置文件,日志文件等相关配置

3.2 配置演示

环境介绍:

实例1端口:6379

实例2端口:6380

实例3端口:6381

注意,这三个端口都不可被占用,用前先检查! 

 配置演示:

#先关闭redis
systemctl stop redis

#复制三个实例的配置文件
cp  /apps/redis/etc/redis.conf   /apps/redis/etc/redis6379.conf
cp  /apps/redis/etc/redis.conf   /apps/redis/etc/redis6380.conf
cp  /apps/redis/etc/redis.conf   /apps/redis/etc/redis6381.conf

#授予权限
chown -R redis.redis /apps/redis

#修改不同实例的配置文件
#端口6379的配置文件
sed -i -e 's/dbfilename dump.rdb/dbfilename dump6379.rdb/' -e 's#logfile ""#logfile /apps/redis/log/redis6379.log#'  redis6379.conf

#端口6380的配置文件
sed -i -e 's/dbfilename dump.rdb/dbfilename dump6380.rdb/' -e 's#logfile ""#logfile /apps/redis/log/redis6380.log#' -e 's/redis_6379.pid/redis_6380.pid/' -e 's/^port 6379/port 6380/' redis6380.conf

#端口6381的配置文件
sed -i -e 's/dbfilename dump.rdb/dbfilename dump6381.rdb/' -e 's#logfile ""#logfile /apps/redis/log/redis6381.log#' -e 's/redis_6379.pid/redis_6381.pid/' -e 's/^port 6379/port 6381/' redis6380.conf

#准备不同实例的service文件
cp  /lib/systemd/system/redis.service     /lib/systemd/system/redis6379.service
cp  /lib/systemd/system/redis.service     /lib/systemd/system/redis6380.service
cp  /lib/systemd/system/redis.service     /lib/systemd/system/redis6381.service
#修改service中的端口
sed -i 's@/apps/redis/etc/redis.conf@/apps/redis/etc/redis6379.conf@' /lib/systemd/system/redis6379.service
sed -i 's@/apps/redis/etc/redis.conf@/apps/redis/etc/redis6380.conf@' /lib/systemd/system/redis6380.service
sed -i 's@/apps/redis/etc/redis.conf@/apps/redis/etc/redis6381.conf@' /lib/systemd/system/redis6381.service

测试:

redis-cli -p 6379
info

redis-cli -p 6380
info

redis-cli -p 6381
info

四、Redis的配置优化

bind 0.0.0.0 #监听地址,可以用空格隔开后多个监听IP

protected-mode yes #redis3.2之后加入的新特性,在没有设置bind IP和密码的时候,redis只允许访问127.0.0.1:6379,可以远程连接,但当访问将提示警告信息并拒绝远程访问

port 6379 #监听端口,默认6379/tcp

tcp-backlog 511 #三次握手的时候server端收到client ack确认号之后的队列值,即全连接队列长度timeout 0 #客户端和Redis服务端的连接超时时间,默认是0,表示永不超时

tcp-keepalive 300 #tcp 会话保持时间300s

daemonize no #默认no,即直接运行redis-server程序时,不作为守护进程运行,而是以前台方式运行,如果想在后台运行需改成yes,当redis作为守护进程运行的时候,它会写一个 pid 到/var/run/redis.pid 文件

supervised no #和OS相关参数,可设置通过upstart和systemd管理Redis守护进程,centos7后都使用systemd

pidfile /var/run/redis_6379.pid #pid文件路径,可以修改为/apps/redis/run/redis_6379.pid

loglevel notice #日志级别

logfile "/path/redis.log" #日志路径,示例:logfile "/apps/redis/log/redis_6379.log"databases 16 #设置数据库数量,默认:0-15,共16个库

always-show-logo yes #在启动redis 时是否显示或在日志中记录记录redis的logo

save 900 1 #在900秒内有1个key内容发生更改,就执行快照机制
save 300 10 #在300秒内有10个key内容发生更改,就执行快照机制
save 60  10000  #60秒内如果有10000个key以上的变化,就自动快照备份

stop-writes-on-bgsave-error yes #默认为yes时,可能会因空间满等原因快照无法保存出错时,会禁止redis写入操作,生产建议为no 
                                #此项只针对配置文件中的自动save有效

rdbcompression yes #持久化到RDB文件时,是否压缩,"yes"为压缩,"no"则反之

rdbchecksum yes #是否对备份文件开启RC64校验,默认是开启

dbfilename dump.rdb #快照文件名

dir ./ #快照文件保存路径,示例:dir "/apps/redis/data"
#主从复制相关
# replicaof <masterip> <masterport> #指定复制的master主机地址和端口,5.0版之前的指令为slaveof 
# masterauth <master-password> #指定复制的master主机的密码

replica-serve-stale-data yes #当从库同主库失去连接或者复制正在进行,从机库有两种运行方式:
1、设置为yes(默认设置),从库会继续响应客户端的读请求,此为建议值
2、设置为no,除去特定命令外的任何请求都会返回一个错误"SYNC with master in progress"。


replica-read-only yes #是否设置从库只读,建议值为yes,否则主库同步从库时可能会覆盖数据,造成数据丢失


repl-diskless-sync no #是否使用socket方式复制数据(无盘同步),新slave第一次连接master时需要做数据的全量同步,redis server就要从内存dump出新的RDB文件,然后从master传到slave,有两种方式把RDB文件传输给客户端:
1、基于硬盘(disk-backed):为no时,master创建一个新进程dump生成RDB磁盘文件,RDB完成之后由父进程(即主进程)将RDB文件发送给slaves,此为默认值
2、基于socket(diskless):master创建一个新进程直接dump RDB至slave的网络socket,不经过主进程和硬盘
#推荐使用基于硬盘(为no),是因为RDB文件创建后,可以同时传输给更多的slave,但是基于socket(为yes), 新slave连接到master之后得逐个同步数据。只有当磁盘I/O较慢且网络较快时,可用diskless(yes),否则一般建议使用磁盘(no)

repl-diskless-sync-delay 5 #diskless时复制的服务器等待的延迟时间,设置0为关闭,在延迟时间内到达的客户端,会一起通过diskless方式同步数据,但是一旦复制开始,master节点不会再接收新slave的复制请求,直到下一次同步开始才再接收新请求。即无法为延迟时间后到达的新副本提供服务,新副本将排队等待下一次RDB传输,因此服务器会等待一段时间才能让更多副本到达。推荐值:30-60

repl-ping-replica-period 10 #slave根据master指定的时间进行周期性的PING master,用于监测master状态,默认10s

repl-timeout 60 #复制连接的超时时间,需要大于repl-ping-slave-period,否则会经常报超时

repl-disable-tcp-nodelay no #是否在slave套接字发送SYNC之后禁用 TCP_NODELAY,如果选择"yes",Redis将合并多个报文为一个大的报文,从而使用更少数量的包向slaves发送数据,但是将使数据传输到slave上有延迟,Linux内核的默认配置会达到40毫秒,如果 "no" ,数据传输到slave的延迟将会减少,但要使用更多的带宽

repl-backlog-size 512mb #复制缓冲区内存大小,当slave断开连接一段时间后,该缓冲区会累积复制副本数据,因此当slave 重新连接时,通常不需要完全重新同步,只需传递在副本中的断开连接后没有同步的部分数据即可。只有在至少有一个slave连接之后才分配此内存空间,建议建立主从时此值要调大一些或在低峰期配置,否则会导致同步到slave失败

repl-backlog-ttl 3600 #多长时间内master没有slave连接,就清空backlog缓冲区

replica-priority 100 #当master不可用,哨兵Sentinel会根据slave的优先级选举一个master,此值最低的slave会优先当选master,而配置成0,永远不会被选举,一般多个slave都设为一样的值,让其自动选择
#min-replicas-to-write 3 #至少有3个可连接的slave,mater才接受写操作
#min-replicas-max-lag 10 #和上面至少3个slave的ping延迟不能超过10秒,否则master也将停止写操作

requirepass foobared #设置redis连接密码,之后需要AUTH pass,如果有特殊符号,用" "引起来,生产建议设置

rename-command #重命名一些高危命令,示例:rename-command FLUSHALL "" 禁用命令
   #示例: rename-command FLUSHALL   123456
   
maxclients 10000 #Redis最大连接客户端
 
maxmemory <bytes> #redis使用的最大内存,单位为bytes字节,0为不限制,建议设为物理内存一半,8G内存的计算方式8(G)*1024(MB)1024(KB)*1024(Kbyte),需要注意的是缓冲区是不计算在maxmemory内,生产中如果不设置此项,可能会导致OOM


appendonly no #是否开启AOF日志记录,默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了,但是redis如果中途宕机,会导致可能有几分钟的数据丢失(取决于dump数据的间隔时间),根据save来策略进行持久化,Append Only File是另一种持久化方式,可以提供更好的持久化特性,Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。默认不启用此功能


appendfilename "appendonly.aof" #文本文件AOF的文件名,存放在dir指令指定的目录中

appendfsync everysec #aof持久化策略的配置
#no表示由操作系统保证数据同步到磁盘,Linux的默认fsync策略是30秒,最多会丢失30s的数据
#always表示每次写入都执行fsync,以保证数据同步到磁盘,安全性高,性能较差
#everysec表示每秒执行一次fsync,可能会导致丢失这1s数据,此为默认值,也生产建议值





#同时在执行bgrewriteaof操作和主进程写aof文件的操作,两者都会操作磁盘,而bgrewriteaof往往会涉及大量磁盘操作,这样就会造成主进程在写aof文件的时候出现阻塞的情形,以下参数实现控制

no-appendfsync-on-rewrite no #在aof rewrite期间,是否对aof新记录的append暂缓使用文件同步策略,主要考虑磁盘IO开支和请求阻塞时间。#默认为no,表示"不暂缓",新的aof记录仍然会被立即同步到磁盘,是最安全的方式,不会丢失数据,但是要忍受阻塞的问题
#为yes,相当于将appendfsync设置为no,这说明并没有执行磁盘操作,只是写入了缓冲区,因此这样并不会造成阻塞(因为没有竞争磁盘),但是如果这个时候redis挂掉,就会丢失数据。丢失多少数据呢?Linux默认fsync策略是30秒,最多会丢失30s的数据,但由于yes性能较好而且会避免出现阻塞因此比较推荐
#rewrite 即对aof文件进行整理,将空闲空间回收,从而可以减少恢复数据时间


auto-aof-rewrite-percentage 100 #当Aof log增长超过指定百分比例时,重写AOF文件,设置为0表示不自动重写Aof日志,重写是为了使aof体积保持最小,但是还可以确保保存最完整的数据


auto-aof-rewrite-min-size 64mb #触发aof rewrite的最小文件大小

aof-load-truncated yes #是否加载由于某些原因导致的末尾异常的AOF文件(主进程被kill/断电等),建议yes

aof-use-rdb-preamble no #redis4.0新增RDB-AOF混合持久化格式,在开启了这个功能之后,AOF重写产生的文件将同时包含RDB格式的内容和AOF格式的内容,其中RDB格式的内容用于记录已有的数据,而AOF格式的内容则用于记录最近发生了变化的数据,这样Redis就可以同时兼有RDB持久化和AOF持久化的优点(既能够快速地生成重写文件,也能够在出现问题时,快速地载入数据),默认为no,即不启用此功能

lua-time-limit 5000 #lua脚本的最大执行时间,单位为毫秒


cluster-enabled yes #是否开启集群模式,默认不开启,即单机模式


cluster-config-file nodes-6379.conf #由node节点自动生成的集群配置文件名称

cluster-node-timeout 15000 #集群中node节点连接超时时间,单位ms,超过此时间,会踢出集群

cluster-replica-validity-factor 10 #单位为次,在执行故障转移的时候可能有些节点和master断开一段时间导致数据比较旧,这些节点就不适用于选举为master,超过这个时间的就不会被进行故障转移,不能当选master,计算公式:(node-timeout * replica-validity-factor) + repl-pingreplica-period

cluster-migration-barrier 1 #集群迁移屏障,一个主节点至少拥有1个正常工作的从节点,即如果主节点的slave节点故障后会将多余的从节点分配到当前主节点成为其新的从节点。

cluster-require-full-coverage yes #集群请求槽位全部覆盖,如果一个主库宕机且没有备库就会出现集群槽位不全,那么yes时redis集群槽位验证不全,就不再对外提供服务(对key赋值时,会出现CLUSTERDOWN The cluster is down的提示,cluster_state:fail,但ping 仍PONG),而no则可以继续使用,但是会出现查询数据查不到的情况(因为有数据丢失)

cluster-replica-no-failover no #如果为yes,此选项阻止在主服务器发生故障时尝试对其主服务器进行故障转移。 但是,主服务器仍然可以执行手动强制故障转移,一般为no
#Slow log 是 Redis 用来记录超过指定执行时间的日志系统,执行时间不包括与客户端交谈,发送回复等I/O操作,而是实际执行命令所需的时间(在该阶段线程被阻塞并且不能同时为其它请求提供服务),由于slow log 保存在内存里面,读写速度非常快,因此可放心地使用,不必担心因为开启 slow log 而影响Redis 的速度

slowlog-log-slower-than 10000 #以微秒为单位的慢日志记录,为负数会禁用慢日志,为0会记录每个命令操作。默认值为10ms,一般一条命令执行都在微秒级,生产建议设为1ms-10ms之间

slowlog-max-len 128 #最多记录多少条慢日志的保存队列长度,达到此长度后,记录新命令会将最旧的命令从命令队列中删除,以此滚动删除,即,先进先出,队列固定长度,默认128,值偏小,生产建议设为1000以上

五、Redis命令

5.1 config临时配置

该命令在重启redis后,配置全部失效

#临时设置连接密码
127.0.0.1:6379> CONFIG SET requirepass 123456
OK

#临时设置最大内存
127.0.0.1:6379> CONFIG SET maxmemory 8589934592
OK
127.0.0.1:6379> CONFIG GET maxmemory
1) "maxmemory"
2) "8589934592"

CONFIG GET slow-log-slower-then  #慢查询列表
SLOWLOG LEN  #查看慢日志的记录条数
SLOWLOG RESET   #清空慢日志
slowlog get [number]
# 查看全部慢日志 [查看一定数量的慢日志]

5.2 INFO

显示当前节点redis运行状态信息

INFO
#查看当前节点运行状态信息


INFO replication
#查看主从复制的信息

5.3 select

切换数据库,相当于在MySQL的 USE DBNAME 指令

#默认redis配置中有16个数据库,即编号为0~15的数据库

select 1 #进入1数据库

#每个数据库相互独立,数据不互通

注意: 在 redis cluster 模式下不支持多个数据库,会出现下面错误

5.4 keys

查看当前库下的所有keys,此命令在生产环境中慎用!

127.0.0.1:6379> KEYS *
1) "9527"
2) "9526"
3) "paihangbang"
4) "list1"

#支持通配符
redis> KEYS *o*
1) "four"
2) "two"
3) "one"

redis> KEYS t??
1) "two"

redis> KEYS *  # 匹配数据库内所有 
key 1) "four"
2) "three"
3) "two"
4) "one"

5.5 mest

#一次性设置多个key

MSET one 1 two 2 three 3 four 4  # 一次设置 4 个 key OK

5.6 bgsave

#手动在后台执行RDB持久化操作
BGSAVE
Background saving started

5.7 dbsize

返回当前库下的所有key 数量

DBSIZE
(integer) 4

SELECT 1
OK
DBSIZE (integer) 0

5.8 flushdb

强制清空当前库中的所有key,此命令慎用

DBSIZE
(integer) 4
FLUSHDB
OK
DBSIZE
(integer) 0

5.9 flushall

强制清空当前redis服务器所有数据库中的所有key,即删除所有数据,此命令慎用!

FLUSHALL OK

生产环境中,可以使用rename配置,来修改此命令,以免失误删除,当然了,能删除说明你故意的;)

rename-command FLUSHALL ""
#rename-command 在6.2.4版淘汰了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值