Redis 是一个开源的、遵循 BSD 协议的、基于内存的并且目前比较流行的键值数据库(key-value database),是一个非关系型数据库, redis 提供将内存经过网络远程共享的一种服务,提供相似功能的还有memcache,但相比 memcache, redis 还提供了易扩展、高性能、 具有数据持久性等功能。
Redis 在高并发、低延迟环境要求比较高的环境使用量很是普遍, 目前 redis 在 DB-Engine 月排行榜https://db-engines.com/en/ranking 中一直比较靠前,并且一直是键值型存储类的首位。node
Session 共享:常见于 web 集群中的 Tomcat 或者 PHP 中多 web 服务器 session 共享
消息队列: ELK 的日志缓存、 部分业务的订阅发布系统
计数器: 访问排行榜、商品浏览数等和次数相关的数值统计场景
缓存: 数据查询、 电商网站商品信息、 新闻内容
微博/微信社交场合: 共同好友、 点赞评论等 python
在centos系统上须要基于epel源进行安装c++
[root@centos7-5 ~]#yum install -y redis 启动Redis服务并设置开机自启 [root@centos7-5 ~]# systemctl start redis && systemctl enable redis Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service. 查看Redis版本 [root@centos7-5 ~]#redis-server -v Redis server v=3.2.12 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=7897e7d0e13773f 链接Redis并查看版本信息 [root@centos7-5 ~]#redis-cli 127.0.0.1:6379> info Server # Server redis_version:3.2.12 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:7897e7d0e13773f redis_mode:standalone os:Linux 3.10.0-957.el7.x86_64 x86_64 arch_bits:64 multiplexing_api:epoll gcc_version:4.8.5 process_id:9524 run_id:7a985888a7f121aece265bc47aab2c611dd92e17 tcp_port:6379 uptime_in_seconds:24 uptime_in_days:0 hz:10 lru_clock:61125 executable:/usr/bin/redis-server config_file:/etc/redis.conf
官网下载Redis至服务器 [root@centos7-6 ~]#wget http://download.redis.io/releases/redis-4.0.14.tar.gz 解压 [root@centos7-6 ~]#tar -xf redis-4.0.14.tar.gz [root@centos7-6 ~]#cd redis-4.0.14/ 安装依赖软件包 [root@centos7-6 redis-4.0.14]#yum install -y vim lrzsz tree screen psmisc lsof tcpdump wget ntpdate gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools iotop bc zip unzip zlib-devel bash-completion nfs-utils automake libxml2 libxml2-devel libxslt libxslt-devel perl perl-ExtUtils-Embed 安装Redis [root@centos7-6 redis-4.0.14]#make PREFIX=/apps/redis install 建立redis配置文件 [root@centos7-6 redis-4.0.14]#mkdir /apps/redis/etc [root@centos7-6 redis-4.0.14]#cp redis.conf /apps/redis/etc/ 指定配置文件,启动redis [root@centos7-6 redis-4.0.14]#/apps/redis/bin/redis-server /apps/redis/etc/redis.conf # 启动警告 13303:M 12 Jun 20:42:10.037 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 13303:M 12 Jun 20:42:10.037 # Server initialized 13303:M 12 Jun 20:42:10.038 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. 13303:M 12 Jun 20:42:10.038 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
[root@centos7-6 redis-4.0.14]#vim /etc/sysctl.conf net.core.somaxconn = 512 # backlog 参数控制的是三次握手的时候 server 端收到 client ack 确认号以后的队列值。 vm.overcommit_memory = 1 # 0、表示内核将检查是否有足够的可用内存供应用进程使用;若是有足够的可用内存,内存申请容许;不然,内存申请失败,并把错误返回给应用进程。 # 一、表示内核容许分配全部的物理内存,而无论当前的内存状态如何。 # 二、表示内核容许分配超过全部物理内存和交换空间总和的内存 [root@centos7-6 redis-4.0.14]#sysctl -p net.core.somaxconn = 512 vm.overcommit_memory = 1 # 开启大页内存动态分配,须要关闭让 redis 负责内存管理。 [root@centos7-6 redis-4.0.14]#echo never > /sys/kernel/mm/transparent_hugepage/enabled 此时再次启动Redis则不会出现警告信息
[root@centos7-6 ~]#vim /usr/lib/systemd/system/redis.service [Unit] Description=Redis persistent key-value database After=network.target After=network-online.target Wants=network-online.target [Service] #ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID Type=notify User=redis Group=redis RuntimeDirectory=redis RuntimeDirectoryMode=0755 [Install] WantedBy=multi-user.target
[root@centos7-6 ~]#useradd redis -s /sbin/nologin [root@centos7-6 ~]#mkdir /apps/redis/{data,logs,run} [root@centos7-6 ~]#chown redis.redis /apps/redis/ -R [root@centos7-6 ~]#ln -sv /apps/redis/bin/redis-* /usr/bin/ ‘/usr/bin/redis-benchmark’ -> ‘/apps/redis/bin/redis-benchmark’ # Redis性能测试工具 ‘/usr/bin/redis-check-aof’ -> ‘/apps/redis/bin/redis-check-aof’ # AOF文件检查工具 ‘/usr/bin/redis-check-rdb’ -> ‘/apps/redis/bin/redis-check-rdb’ # RDB文件检查工具 ‘/usr/bin/redis-cli’ -> ‘/apps/redis/bin/redis-cli’ # Redis客户端工具 ‘/usr/bin/redis-sentinel’ -> ‘/apps/redis/bin/redis-sentinel’ # 哨兵,软链接到server ‘/usr/bin/redis-server’ -> ‘/apps/redis/bin/redis-server’ # Redis服务端
[root@centos7-6 ~]#systemctl daemon-reload [root@centos7-6 ~]#systemctl start redis.service [root@centos7-6 ~]#ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 511 127.0.0.1:6379 *:* [root@centos7-6 ~]#redis-cli 127.0.0.1:6379> info Server # Server redis_version:4.0.14 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:3e5aec6afe61b942 ....
# redis-cli
# redis-cli -h HOSTNAME/IP -p PORT
# redis-cli -h HOSTNAME/IP -p PORT -a PASSWORD
#!/bin/env python import redis import time pool = redis.ConnectionPool(host="192.168.36.116", port=6379,password="") r = redis.Redis(connection_pool=pool) for i in range(100): r.set("k%d" % i,"v%d" % i) time.sleep(1) data=r.get("k%d" % i) print(data)
bind 0.0.0.0 #监听地址, 能够用空格隔开后多个监听 IP protected-mode yes #redis3.2 以后加入的新特性, 在没有设置 bind IP 和密码的时候只容许访问127.0.0.1:6379 port 6379 #监听端口 tcp-backlog 511 #三次握手的时候 server 端收到 client ack 确认号以后的队列值。 timeout 0 #客户端和 Redis 服务端的链接超时时间,默认是 0,表示永不超时。 tcp-keepalive 300 #tcp 会话保持时间 daemonize no #认状况下 redis 不是做为守护进程运行的,若是你想让它在后台运行,你就把它改为yes,当 redis 做为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面 supervised no #和操做系统相关参数, 能够设置经过 upstart 和 systemd 管理 Redis 守护进程, centos 7之后都使用 systemd pidfile /var/run/redis_6379.pid #pid 文件路径 loglevel notice #日志级别logfile "" #日志路径 databases 16 #设置 db 库数量,默认 16 个库 always-show-logo yes #在启动 redis 时是否显示 log save 900 1 #在 900 秒内有一个键内容发生更改就出就快照机制 save 300 10 save 60 10000 stop-writes-on-bgsave-error no #快照出错时是否禁止 redis 写入操做 rdbcompression yes #持久化到 RDB 文件时,是否压缩, "yes"为压缩, "no"则反之 rdbchecksum yes #是否开启 RC64 校验,默认是开启 dbfilename dump.rdb #快照文件名 dir ./ #快照文件保存路径 replica-serve-stale-data yes #当从库同主库失去链接或者复制正在进行,从机库有两种运行方式: 1) 若是 replica-serve-stale-data 设置为 yes(默认设置),从库会继续响应客户端的读请求。 2) 若是 replicaserve-stale-data 设置为 no,除去指定的命令以外的任何请求都会返回一个错误"SYNC with master in progress"。 replica-read-only yes #是否设置从库只读 repl-diskless-sync no #是否使用 socket 方式复制数据, 目前 redis 复制提供两种方式, disk 和 socket, 若是新的 slave 连上来或者重连的 slave 没法部分同步,就会执行全量同步, master 会生成 rdb 文件, 有2 种方式: disk 方式是 master 建立一个新的进程把 rdb 文件保存到磁盘,再把磁盘上的 rdb 文件传递给 slave, socket 是 master 建立一个新的进程,直接把 rdb 文件以 socket 的方式发给 slave, disk 方式的时候,当一个 rdb 保存的过程当中,多个 slave 都能共享这个 rdb 文件, socket 的方式就是一个个 slave顺序复制, 只有在磁盘速度缓慢可是网络相对较快的状况下才使用 socket 方式, 不然使用默认的 disk方式 repl-diskless-sync-delay 30 #diskless 复制的延迟时间, 设置 0 为关闭, 一旦复制开始尚未结束以前,master 节点不会再接收新 slave 的复制请求, 直到下一次开始 repl-ping-slave-period 10 #slave 根据 master 指定的时间进行周期性的 PING 监测 repl-timeout 60 #复制连接超时时间,须要大于 repl-ping-slave-period, 不然会常常报超时 repl-disable-tcp-nodelay no #在 socket 模式下是否在 slave 套接字发送 SYNC 以后禁用 TCP_NODELAY,若是你选择“yes”Redis 将使用更少的 TCP 包和带宽来向 slaves 发送数据。可是这将使数据传输到 slave 上有延迟, Linux 内核的默认配置会达到 40 毫秒, 若是你选择了 "no" 数据传输到 salve 的延迟将会减小但要使用更多的带宽 repl-backlog-size 1mb #复制缓冲区大小, 只有在 slave 链接以后才分配内存。 repl-backlog-ttl 3600 #屡次时间 master 没有 slave 链接,就清空 backlog 缓冲区。 replica-priority 100 #当 master 不可用, Sentinel 会根据 slave 的优先级选举一个 master。最低的优先级的 slave,当选 master。而配置成 0,永远不会被选举。requirepass foobared #设置 redis 链接密码 rename-command #重命名一些高危命令 maxclients 10000 #最大链接客户端 maxmemory #最大内存,单位为 bytes 字节,8G 内存的计算方式 8(G)*1024(MB)*1024(KB)*1024(Kbyte),须要注意的是 slave 的输出缓冲区是不计算在 maxmemory 内。 appendonly no #是否开启 AOF 日志记录, 默认 redis 使用的是 rdb 方式持久化,这种方式在许多应用中已经足够用了。可是 redis 若是中途宕机,会致使可能有几分钟的数据丢失,根据 save 来策略进行持久化,Append Only File 是另外一种持久化方式,能够提供更好的持久化特性。 Redis 会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时 Redis 都会先把这个文件的数据读入内存里,先忽略 RDB 文件。 appendfilename "appendonly.aof" #AOF 文件名 appendfsync everysec #aof 持久化策略的配置,no 表示不执行 fsync,由操做系统保证数据同步到磁盘,always 表示每次写入都执行 fsync,以保证数据同步到磁盘,everysec 表示每秒执行一次 fsync,可能会致使丢失这 1s 数据。 no-appendfsync-on-rewrite no #在 aof rewrite 期间,是否对 aof 新记录的 append 暂缓使用文件同步策略,主要考虑磁盘 IO 开支和请求阻塞时间。默认为 no,表示"不暂缓",新的 aof 记录仍然会被当即同步,Linux 的默认 fsync 策略是 30 秒,若是为 yes 可能丢失 30 秒数据, 但因为 yes 性能较好并且会避免出现阻塞所以比较推荐。 auto-aof-rewrite-percentage 100 # 当 Aof log 增加超过指定百分比例时,重写 log file, 设置为 0 表示不自动重写 Aof 日志,重写是为了使 aof 体积保持最小,而确保保存最完整的数据。 auto-aof-rewrite-min-size 64mb #触发 aof rewrite 的最小文件大小 aof-load-truncated yes #是否加载因为其余缘由致使的末尾异常的 AOF 文件(主进程被 kill/断电等) aof-use-rdb-preamble yes #redis4.0 新增 RDB-AOF 混合持久化格式,在开启了这个功能以后, AOF 重写产生的文件将同时包含 RDB 格式的内容和 AOF 格式的内容,其中 RDB 格式的内容用于记录已有的数据,而 AOF 格式的内存则用于记录最近发生了变化的数据,这样 Redis 就能够同时兼有 RDB 持久化和AOF 持久化的优势(既可以快速地生成重写文件,也可以在出现问题时,快速地载入数据)。 lua-time-limit 5000 #lua 脚本的最大执行时间, 单位为毫秒 cluster-enabled yes #是否开启集群模式,默认是单机模式 cluster-config-file nodes-6379.conf #由 node 节点自动生成的集群配置文件 cluster-node-timeout 15000 #集群中 node 节点链接超时时间 cluster-replica-validity-factor 10 #在执行故障转移的时候可能有些节点和 master 断开一段时间数据比较旧, 这些节点就不适用于选举为 master, 超过这个时间的就不会被进行故障转移 cluster-migration-barrier 1 #一个主节点拥有的至少正常工做的从节点, 即若是主节点的 slave 节点故障后会将多余的从节点分配到当前主节点成为其新的从节点。 cluster-require-full-coverage no #集群槽位覆盖, 若是一个主库宕机且没有备库就会出现集群槽位不全, 那么 yes 状况下 redis 集群槽位验证不全就再也不对外提供服务,而 no 则能够继续使用可是会出现查询数据查不到的状况(由于有数据丢失)。 #Slow log 是 Redis 用来记录查询执行时间的日志系统, slow log 保存在内存里面,读写速度很是快,所以你能够放心地使用它,没必要担忧由于开启 slow log 而损害 Redis 的速度。 slowlog-log-slower-than 10000 #以微秒为单位的慢日志记录, 为负数会禁用慢日志, 为 0 会记录每一个命令操做。 slowlog-max-len 128 #记录多少条慢日志保存在队列,超出后会删除最先的, 以此滚动删除
redis 虽然是一个内存级别的缓存程序,即 redis 是使用内存进行数据的缓存的,可是其能够将内存的数据按照必定的策略保存到硬盘上,从而实现数据持久保存的目的, redis 支持两种不一样方式的数据持久化保存机制,分别是 RDB 和 AOFgit
RDB: 基于时间的快照, 只保留当前最新的一次快照, 特色是执行速度比较快,缺点是可能会丢失从上次快照到当前快照未完成之间的数据。
RDB 实现的具体过程 Redis 从主进程先 fork 出一个子进程,使用写时复制机制,子进程将内存的数据保存为一个临时文件,好比 dump.rdb.temp,当数据保存完成以后再将上一次保存的 RDB 文件替换掉,而后关闭子进程,这样能够保存每一次作 RDB 快照的时候保存的数据都是完整的,由于直接替换 RDB文件的时候可能会出现忽然断电等问题而致使 RDB 文件尚未保存完整就忽然关机中止保存而致使数据丢失的状况,能够手动将每次生成的 RDB 文件进程备份,这样能够最大化保存历史数据。web
优势:redis
缺点: 数据库
AOF:按照操做顺序依次将操做添加到指定的日志文件当中,特色是数据安全性相对较高, 缺点是即便有些操做是重复的也会所有记录。
AOF 和 RDB 同样使用了写时复制机制, AOF 默认为每秒钟 fsync 一次,即将执行的命令保存到 AOF 文件当中,这样即便 redis 服务器发生故障的话顶多也就丢失 1 秒钟以内的数据,也能够设置不一样的 fsync策略,或者设置每次执行命令的时候执行 fsync, fsync 会在后台执行线程,因此主线程能够继续处理用户的正常请求而不受到写入 AOF 文件的 IO 影响。编程
AOF 的文件大小要大于 RDB 格式的文件
根据所使用的 fsync 策略(fsync 是同步内存中 redis 全部已经修改的文件到存储设备),默认是appendfsync everysec 即每秒执行一次 fsyncvim
字符串是全部编程语言中最多见的和最经常使用的数据类型,并且也是 redis 最基本的数据类型之一,并且 redis 中全部的 key 的类型都是字符串。centos
127.0.0.1:6379> SET key1 value1 # 添加一个key OK 127.0.0.1:6379> GET key1 # 获取一个key的内容 "value1" 127.0.0.1:6379> TYPE key1 # 查看key的类型 string 127.0.0.1:6379> SET name Darius ex 3 # 对key设置自动过时时间 OK 127.0.0.1:6379> KEYS * # 查看全部key 1) "name" 2) "key1" 127.0.0.1:6379> KEYS * # 超过设定的过时时间,自动取消预先设定的key 1) "key1"
127.0.0.1:6379> DEL key1 (integer) 1 # 删除一个key 127.0.0.1:6379> KEYS * (empty list or set) # 空key
127.0.0.1:6379> MSET key1 value1 key2 value2 # 格式:一个key对应本身的key值 OK
127.0.0.1:6379> MGET key1 key2 1) "value1" 2) "value2"
127.0.0.1:6379> APPEND key1 append (integer) 12 127.0.0.1:6379> GET key1 "value1append"
127.0.0.1:6379> SET num 10 OK 127.0.0.1:6379> INCR num (integer) 11 127.0.0.1:6379> GET num "11" 127.0.0.1:6379> INCR num (integer) 12 127.0.0.1:6379> GET num "12"
127.0.0.1:6379> SET num 10 OK 127.0.0.1:6379> GET num "10" 127.0.0.1:6379> DECR num (integer) 9 127.0.0.1:6379> GET num "9" 127.0.0.1:6379> DECR num (integer) 8 127.0.0.1:6379> GET num "8"
(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error. # 此问题是因为快照出错时是否禁止 redis 写入操做,不能;进行持久化引发的。须要修改配置文件中stop-writes-on-bgsave-error 为no,从新启动redis便可 [root@centos7-6 ~]#grep 'stop-writes-on-bgsave-error' /apps/redis/etc/redis.conf stop-writes-on-bgsave-error no [root@centos7-6 ~]#systemctl restart redis
127.0.0.1:6379> STRLEN key1 (integer) 12
列表是一个双向可读写的管道, 其头部是左侧尾部是右侧,一个列表最多能够包含 2^32-1 个元素即4294967295 个元素。
127.0.0.1:6379> LPUSH list1 darius tom jhon (integer) 3 127.0.0.1:6379> TYPE list1 list
127.0.0.1:6379> LPUSH list1 a # 左追加 (integer) 4 127.0.0.1:6379> RPUSH list1 b # 右追加 (integer) 5
127.0.0.1:6379> LLEN list1 (integer) 5
127.0.0.1:6379> RPOP list1 # 最后一个 "b" 127.0.0.1:6379> LPOP list1 # 第一个 "a"
Set 是 String 类型的无序集合。集合成员是惟一的,这就意味着集合中不能出现重复的数据。
127.0.0.1:6379> SADD set1 v1 (integer) 1 127.0.0.1:6379> SADD set2 v2 v4 (integer) 2 127.0.0.1:6379> TYPE set1 set 127.0.0.1:6379> TYPE set2 set
127.0.0.1:6379> SADD set1 v2 v3 v4 (integer) 3 127.0.0.1:6379> SADD set1 v2 # 追加失败,追加的时候不能追加已经存在的数值 (integer) 0
127.0.0.1:6379> SMEMBERS set1 1) "v4" 2) "v2" 3) "v3" 4) "v1" 127.0.0.1:6379> SMEMBERS set2 1) "v4" 2) "v2"
# 差集: 已属于 A 而不属于 B 的元素称为 A 与 B 的差(集) 127.0.0.1:6379> SDIFF set1 set2 1) "v1" 2) "v3"
# 交集: 已属于 A 且属于 B 的元素称为 A 与 B 的交(集) 127.0.0.1:6379> SINTER set1 set2 1) "v4" 2) "v2"
# 并集:已属于 A 或属于 B 的元素为称为 A 与 B 的并(集) 127.0.0.1:6379> SUNION set1 set2 1) "v2" 2) "v1" 3) "v3" 4) "v4"
Redis 有序集合和集合同样也是 string 类型元素的集合,且不容许重复的成员,不一样的是每一个元素都会关联一个 double(双精度浮点型)类型的分数, redis 正是经过分数来为集合中的成员进行从小到大的排序, 有序集合的成员是惟一的,但分数(score)却能够重复,集合是经过哈希表实现的,因此添加,删除,查找的复杂度都是 O(1), 集合中最大的成员数为 2^32 - 1 (4294967295, 每一个集合可存储 40 多亿个成员)。
127.0.0.1:6379> ZADD zset1 1 v1 (integer) 1 127.0.0.1:6379> ZADD zset1 2 v2 (integer) 1 127.0.0.1:6379> ZADD zset1 3 v3 (integer) 1 127.0.0.1:6379> ZADD zset1 4 v4 (integer) 1 127.0.0.1:6379> TYPE zset1 zset 127.0.0.1:6379> ZREVRANGE zset1 0 -1 withscores # 显示指定集合内全部key和key值状况 1) "v4" 2) "4" 3) "v3" 4) "3" 5) "v2" 6) "2" 7) "v1" 8) "1" # 示例 127.0.0.1:6379> ZADD paihangbang 20 key1 10 key2 30 key3 # 添加集合 (integer) 3 127.0.0.1:6379> ZREVRANGE paihangbang 0 -1 WITHSCORES # 显示集合内全部key与key值,发现按照顺序进行排列 1) "key3" 2) "30" 3) "key1" 4) "20" 5) "key2" 6) "10"
127.0.0.1:6379> ZADD paihangbang 20 key1 10 key2 30 key3 (integer) 3
127.0.0.1:6379> ZCARD zset1 (integer) 4 127.0.0.1:6379> ZCARD paihangbang (integer) 3
127.0.0.1:6379> ZRANGE zset1 2 3 1) "v3" 2) "v4" 127.0.0.1:6379> ZRANGE zset1 0 2 1) "v1" 2) "v2" 3) "v3" 127.0.0.1:6379> ZRANGE zset1 1 3 1) "v2" 2) "v3" 3) "v4"
127.0.0.1:6379> ZRANK zset1 v2 (integer) 1 127.0.0.1:6379> ZRANK zset1 v1 (integer) 0
hash 是一个 string 类型的 field 和 value 的映射表, hash 特别适合用于存储对象,Redis 中每一个 hash 能够存储 232 - 1 键值对(40 多亿)。
127.0.0.1:6379> HSET hset1 name darius age 18 (integer) 2 127.0.0.1:6379> TYPE hset1 hash
127.0.0.1:6379> HGET hset1 name "darius" 127.0.0.1:6379> HGET hset1 age "18"
127.0.0.1:6379> HDEL hset1 age (integer) 1
127.0.0.1:6379> HSET hset1 name darius age 18 (integer) 1 127.0.0.1:6379> HKEYS hset1 1) "name" 2) "age"
config 命令用于查看当前 redis 配置、以及不重启更改 redis 配置等
# 更改最大内存 127.0.0.1:6379> CONFIG GET maxmemory 1) "maxmemory" 2) "0" 127.0.0.1:6379> CONFIG SET maxmemory 8589934592 OK 127.0.0.1:6379> CONFIG GET maxmemory 1) "maxmemory" 2) "8589934592" # 设置链接密码,这只以后当即生效,但推出当前运行环境即失效,若想长久保存还须要写入配置文件中 127.0.0.1:6379> CONFIG GET requirepass 1) "requirepass" 2) "" 127.0.0.1:6379> CONFIG SET requirepass 123456 OK 127.0.0.1:6379> CONFIG GET requirepass (error) NOAUTH Authentication required. # 密码生效,须输入认证密码方可查询 127.0.0.1:6379> AUTH 123456 # 密码认证 OK 127.0.0.1:6379> CONFIG GET requirepass 1) "requirepass" 2) "123456" # 获取当前配置 127.0.0.1:6379> CONFIG GET * 1) "dbfilename" 2) "dump.rdb" 3) "requirepass" 4) "123456" 5) "masterauth" 6) "" 7) "cluster-announce-ip" 8) "" 9) "unixsocket" 10) "" 11) "logfile" 12) "" 13) "pidfile" 14) "/var/run/redis_6379.pid" ....
显示当前节点 redis 运行状态信息
127.0.0.1:6379> info # Server redis_version:4.0.14 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:3e5aec6afe61b942 redis_mode:standalone os:Linux 3.10.0-957.el7.x86_64 x86_64 arch_bits:64 multiplexing_api:epoll atomicvar_api:atomic-builtin gcc_version:4.8.5 process_id:7582 run_id:b122e141e18e7e2b129dc7dc093cf107e14f045a tcp_port:6379 uptime_in_seconds:4082 ....
切换数据库
127.0.0.1:6379> SELECT 2 OK 127.0.0.1:6379[2]>
查看当前库下的全部 key
127.0.0.1:6379> KEYS * 1) "paihangbang" 2) "key2" 3) "hset1" 4) "set1" 5) "zset1" 6) "key1" 7) "num" 8) "set2" 9) "list1"
手动在后台执行 RDB 持久化操做
127.0.0.1:6379> BGSAVE Background saving started
返回当前库下的全部 key 数量
127.0.0.1:6379> DBSIZE (integer) 9
强制清空当前库中的全部 key
127.0.0.1:6379> FLUSHDB OK 127.0.0.1:6379> KEYS * (empty list or set)
强制清空当前 redis 服务器全部数据库中的全部 key, 即删除全部数据
127.0.0.1:6379> FLUSHALL OK