文章目录
前言
在生产环境中,许多Web应用都将数据保存到 RDBMS中,应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。Redis是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web等应用的速度、 提高可扩展性。
提示:以下是本篇文章正文内容,下面案例可供参考
一、redis介绍
1、什么是redis?
redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库,即NoSQL。
2、redis的特点
1、支持丰富的数据结构(string、list、hash、set(无序集合)、zset)
2、支持持久化(AOF、RDB)
3、支持事务(事务是指“一个完整的动作,要么全部执行,要么什么也没有做”。)
4、支持主从、高可用、哨兵
5、多种内存分配及回收策略
6、支持事物,锁
二、redis安装
源码编译安装
1.下载安装包
代码如下(示例):
[root@db01 ~]# wget http://download.redis.io/releases/redis-5.0.9.tar.gz
2.安装编译依赖
[root@db01 ~]# yum install -y gcc gcc-c++
3.解压并编译安装
[root@db01 ~]# tar xf redis-5.0.9.tar.gz
[root@db01 ~]# mv redis-5.0.9 /export/server/
[root@db01 ~]# mv /export/server/redis-5.0.9 /export/server/redis
[root@db01 ~]# cd /export/server/redis/
[root@db01 redis]# make
4.设置环境变量
[root@db01 redis]# vim /etc/profile
export REDIS_HOME=/export/server/redis
export PATH=$PATH:$REDIS_HOME/bin
[root@db01 redis]# source /etc/profile
5.验证
[root@db01 redis]# redis-server -v
Redis server v=5.0.9 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=efe084a04347e326
三、redis配置文件
默认配置文件路径
配置如下(示例):
[root@db01 redis]# vim /export/server/redis/redis.conf
大体上redis配置文件如下所示
配置项 | 说明 |
---|---|
daemonize | yes 表示 Redis 以守护进程方式启动,即后台运行。 |
pidfile | 指定存储 Redis 进程 PID 的文件路径。默认为 /var/run/redis.pid 。 |
port | Redis 服务的监听端口,默认是 6379,当前被注释掉,不启用。 |
tcp-backlog | 设置系统调用的待处理连接队列的长度,默认是 511。 |
timeout | 客户端连接的超时时间(秒),超过此时间未响应的客户端连接将被关闭。 |
tcp-keepalive | 设置 TCP 连接的 keepalive 间隔时间(秒),用于探测空闲连接。 |
loglevel | 设置日志级别,notice 是日志级别之一,表示日志信息。其他级别包括 debug ,verbose ,warning 等。 |
logfile | 指定日志文件的路径,空字符串表示不输出日志文件。 |
databases | Redis 的数据库数量,默认为 16 个数据库。 |
save | 用于设置 RDB 快照持久化的条件。save 900 1 表示 900 秒内至少有 1 个键发生变化时进行保存。 |
stop-writes-on-bgsave-error | 设置为 yes 时,若后台保存 RDB 文件出现错误,Redis 将停止写操作。 |
rdbcompression | 设置为 yes 时,RDB 文件会进行压缩,减少磁盘占用。 |
rdbchecksum | 设置为 yes 时,在 RDB 文件中存储校验和,用于验证文件的完整性。 |
dbfilename | 设置 RDB 文件的文件名,默认为 dump.rdb 。 |
dir | 设置 Redis 数据库文件的保存目录,默认为当前目录,配置为 "/export/server/redis/data" 。 |
slave-serve-stale-data | 设置为 yes 时,Redis 从节点在主节点不可用时仍然提供过期数据。 |
slave-read-only | 设置为 yes 时,从节点只读,不能写入。 |
repl-diskless-sync | 设置为 no 时,禁用磁盘无同步操作,采用标准的磁盘同步。 |
repl-diskless-sync-delay | 设置磁盘无同步延迟时间,单位为秒。 |
repl-disable-tcp-nodelay | 设置为 no 时,从节点的 TCP 连接将启用 TCP_NODELAY ,以减少延迟。 |
slave-priority | 从节点的优先级,默认 100,数值越小优先级越高,值为 0 表示从节点不会成为新的主节点。 |
appendonly | 设置为 no 时,禁用 AOF 持久化模式。 |
appendfilename | 设置 AOF 文件的名称,默认为 appendonly.aof 。 |
appendfsync | 设置 AOF 文件的同步频率,everysec 表示每秒同步一次。 |
no-appendfsync-on-rewrite | 设置为 no 时,AOF 文件在重写期间会被同步,保证数据一致性。 |
auto-aof-rewrite-percentage | 设置 AOF 重写的触发条件,当 AOF 文件大小比上次重写时的大小增长超过该百分比时,进行 AOF 重写。 |
auto-aof-rewrite-min-size | 设置 AOF 文件重写的最小文件大小,默认为 64MB。 |
aof-load-truncated | 设置为 yes 时,AOF 文件的截断部分将被忽略,避免出现数据不一致的情况。 |
lua-time-limit | 设置 Lua 脚本执行的最大时间,超过此时间会终止脚本。单位为毫秒。 |
slowlog-log-slower-than | 设置记录慢查询的阈值,单位是微秒(10毫秒)。 |
slowlog-max-len | 设置慢查询日志的最大长度,超过此长度的记录将被删除。 |
latency-monitor-threshold | 设置延迟监控的阈值,单位是毫秒。若 Redis 处理的操作超过此阈值,则会记录延迟。 |
notify-keyspace-events | 用于设置 Redis 发布键空间事件通知的选项,通常为空表示不启用。 |
hash-max-ziplist-entries | 设置哈希表最大条目数,超过该条目数将使用哈希表的其他存储结构(如哈希表)。 |
hash-max-ziplist-value | 设置哈希表中每个元素的最大字节数,超过该字节数会采用其他存储结构。 |
list-max-ziplist-entries | 设置列表最大条目数,超过该条目数会使用不同的存储方式。 |
list-max-ziplist-value | 设置列表每个元素的最大字节数,超过该字节数会采用不同的存储方式。 |
set-max-intset-entries | 设置集合最大整数元素数,超过该条目数时将转换为其他类型(如哈希表)。 |
zset-max-ziplist-entries | 设置有序集合最大条目数,超过该条目数会使用其他存储方式。 |
zset-max-ziplist-value | 设置有序集合中每个元素的最大字节数,超过该字节数会使用其他存储方式。 |
hll-sparse-max-bytes | 设置 HyperLogLog 的最大字节数,当数据超过此值时会转为其他存储方式。 |
activerehashing | 设置为 yes 时,Redis 会根据需要动态重新哈希大集合或哈希表,以保持性能。 |
client-output-buffer-limit normal | 设置普通客户端的输出缓冲区限制,限制为 0 表示没有限制。 |
client-output-buffer-limit slave | 设置从节点的客户端输出缓冲区限制。 |
client-output-buffer-limit pubsub | 设置订阅发布模式的客户端输出缓冲区限制。 |
hz | Redis 的操作频率,默认为 10 次/秒。 |
aof-rewrite-incremental-fsync | 设置为 yes 时,AOF 文件重写期间会增量同步,减少同步负担。 |
protected-mode | 设置为 no 时,禁用保护模式。默认情况下,Redis 在公开网络上默认启用保护模式。 |
cluster-enabled | 设置为 yes 启用 Redis 集群模式。如果禁用集群,Redis 将以单实例模式运行。 |
cluster-config-file | 指定集群配置文件的路径,通常用于存储集群节点的信息。此文件会在节点启动时生成,默认是 nodes.conf 。 |
cluster-node-timeout | 设置集群节点的超时时间(毫秒),即当一个节点没有回应时,其他节点等待的时间。默认值是 15000 毫秒(15 秒)。 |
masterauth | 设置主节点认证密码。每个节点都可以使用该密码进行身份验证,确保主节点的访问安全。 |
requirepass | 设置客户端连接 Redis 实例时需要的密码。即客户端在连接时必须提供此密码才能访问 Redis。 |
maxmemory | 设置redis最大内存 |
四、redis常用命令
1、启动redis
[root@ops ~]# /export/server/redis/bin/redis-server /export/server/redis/conf/7001/redis_7001.conf
2、连接redis
[root@ops ~]# redis-cli -h 192.168.30.21 -p 7001 -a "xxx"
3、查看redis信息
192.168.30.21:7001> info
# Server
redis_version:5.0.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:efe084a04347e326
redis_mode:cluster
os:Linux 3.10.0-693.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
4、key操作命令
4.1、获取所有键
192.168.30.21:7001> keys *
4.2、删除键
可以一次性删除多个键
192.168.30.21:7001> del key xx xx
4.3、查询键是否存在
如果存在则返回存在的个数
192.168.30.21:7001> exists xxx
(integer) 1
4.4、获取键总数
192.168.30.21:7001> dbsize
(integer) 14719
4.5、查询键类型
192.168.30.21:7001> type xxx
string
4.6、查询键的有效期
-1代表永不过期,秒语法:ttl key 毫秒语法:pttl key
192.168.30.21:7001> ttl xxx
(integer) -1
4.7、键设置过期时间
秒语法:expire key seconds 毫秒语法:pexpire key milliseconds
192.168.30.21:7001> expire javastack 60
(integer) 1
4.8、获取键对应的值
192.168.30.21:7001> get xxx
4.9、设置键值
如果key不存在则建立,xx:如果key存在则修改其值
192.168.30.21:7001> set xxx(键) xxx(值)