十年河东,十年河西,莫欺少年穷
学无止境,精益求精
首先说下,我的 Redis 系列博客如下:
[置顶] 高并发时,使用Redis应注意的问题【缓存穿透、缓存击穿.、缓存雪崩】
windows环境下配置Redis主从复制-一主二仆,薪火相传、反客为主、哨兵模式
Redis 持久化技术 ,大名鼎鼎的Rdb和Aof,你会选谁呢?
简单介绍下Redis消息队列,实际生产环境中,大数据高并发时,不建议使用Redis做消息队列中间件
Redis 事务,和传统的关系型数据库ACID并不同,别搞混了
Redis常用配置redis.conf介绍,别把默认配置部署到到服务器,否则,会被领导骂的
C# Nuget程序集StackExchange.Redis操作Redis 及 Redis 视频资源 及 相关入门指令 牛逼不,全都有
Window环境下安装Redis 并 自启动Redis 及 Redis Desktop Manager
进入正文
1、Redis默认不是以守护进程的方式进行运行,可以通过修改配置,使用yes启用守护进程【守护线程,只在linux下有效】。
daemonize no 改成 daemonize yes
daemonize 设置yes或者no区别
daemonize:yes:redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。
daemonize:no: 当daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。
2、Redis绑定的IP 及 端口号,IP默认为 127.0.0.1 ,端口号默认为:6379
如果想绑定任意Ip,请修改为:0.0.0.0
3、Redis关闭连接时长,当客户端空闲多长时间时关闭连接
timeout 0 建议改成 timeout 600 也就是说空闲十分钟时,关闭连接
4、Redis日志级别
loglevel notice
5、Redis日志记录方式,默认为标准输出,如果配置Redis为守护进程运行,而这里由配置日志记录方式为默认输出,则日志将会发送给 /dev/null
logfile "" 改成 logfile stdout
6、指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个文件配合。
# after 900 sec (15 min) if at least 1 key changed # after 300 sec (5 min) if at least 10 keys changed # after 60 sec if at least 10000 keys changed # save 900 1 save 300 10 save 60 10000
这个可以看做Redis的持久化策略,它的语法为:save seconds changes,例如:save 300 10 意思是指:300秒内有10个增删改,则会更新一次dump.rdb,因此,这个需要按需配置。
7、指定本地Redis数据存放目录
dir ./
8、Redis 设置同一时刻最大连接数,0代表无穷大,当客户端连接达到设置的上限时,Redis会关闭新的连接,并向客户端返回"max numbers of cilents reached"错误信息
maxclients 128
Redis默认为10000,为了防止有人恶意攻击服务器,建议修改。这里修改为128
9、指定Redis最大内存限制,Redis启动时,会把数据加载到内存,当内存开销达到最大内存时,Redis会尝试清除即将过期的Key【前提是你设置了内存清除策略】,当清理后,内存依旧达到最大内存时,将无法进行Redis的写入操作,读取工作仍旧正常,Redis 新的vm机制会把key放入内存,value 放入swap区。
maxmemory 4gb
关于swap区说明如下:
swap是操作系统的行为,是指当内存不足时,操作系统将内存的数据拿出一部分放入磁盘,数据从内存和磁盘换入换出的机制,涉及到磁盘的IO。一旦发生swap,内存对应的进程的性能都会受到影响,因为硬盘的访问速度远远小于内存。
redis作为内存数据库,如果redis对应的内存发生了swap,那么redis的性能会受到极大的影响。
更详细内容请参考:https://www.cnblogs.com/Brake/p/14353335.html
10. 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
rdbcompression yes
11、设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭
requirepass foobared
关于怎样设置密码,可参考我的博客小插曲:C# Nuget程序集StackExchange.Redis操作Redis 及 Redis 视频资源 及 相关入门指令 牛逼不,全都有
12、设置Redis的内存清空策略。redis默认为永不过期,在生产环境中,切记不要设置为永不过期,否则会被打死。
maxmemory-policy noeviction
redis有六种内存淘汰策略
noeviction: 不删除策略, 达到最大内存限制时, 如果需要更多内存, 直接返回错误信息。 大多数写命令都会导致占用更多的内存(有极少数会例外, 如 DEL )。
allkeys-lru: 所有key通用; 优先删除最近最少使用(less recently used ,LRU) 的 key。
volatile-lru: 只限于设置了 expire 的部分; 优先删除最近最少使用(less recently used ,LRU) 的 key。
allkeys-random: 所有key通用; 随机删除一部分 key。
volatile-random: 只限于设置了 expire 的部分; 随机删除一部分 key。
volatile-ttl: 只限于设置了 expire 的部分; 优先删除剩余时间(time to live,TTL) 短的key。
因此,你需要在这六种内选择一种,我选的是volatile-lru
以上便是Redis常用的配置,当然,还有很多配置我没有写出来,将来会以专题的模式进行,更多关于Redis的配置,请大家自行搜索。
最后贴上我的修改config的命令,如下:
C:Userschenwolong>redis-cli 127.0.0.1:6379> ping PONG 127.0.0.1:6379> config set maxmemory-policy volatile-lru OK 127.0.0.1:6379> config get maxmemory-policy 1) "maxmemory-policy" 2) "volatile-lru" 127.0.0.1:6379> config set maxmemory 4GB OK 127.0.0.1:6379> config get maxmemory 1) "maxmemory" 2) "4294967296" 127.0.0.1:6379> config set maxclients 128 OK 127.0.0.1:6379> config get maxclients 1) "maxclients" 2) "128"127.0.0.1:6379> config set timeout 600 OK 127.0.0.1:6379> config get timeout 1) "timeout" 2) "600" 127.0.0.1:6379> config set loglevel notice OK 127.0.0.1:6379> config get loglevel 1) "loglevel" 2) "notice" 127.0.0.1:6379>
通过命令修改完成后,重启Redis服务即可。
@天才卧龙的博客