宜兴网站建设哪家好,品牌推广的步骤,潍坊市房屋和城乡建设局网站,网站挂标 怎么做截止目前#xff0c;Redis 的最新稳定版本是 6.2.6。这个版本在可读性、性能和稳定性方面进行了改进#xff0c;并增加了一些新的命令和功能。 一、安装redis
1.1 拉去镜像
docker pull redis:6.2.6
执行过程
1-拉去镜像
[rootiZuf6hxabqikytnrumsi4gZ logs]# docker p… 截止目前Redis 的最新稳定版本是 6.2.6。这个版本在可读性、性能和稳定性方面进行了改进并增加了一些新的命令和功能。 一、安装redis
1.1 拉去镜像
docker pull redis:6.2.6
执行过程
1-拉去镜像
[rootiZuf6hxabqikytnrumsi4gZ logs]# docker pull redis:6.2.62- 查看拉去的镜像
[rootiZuf6hxabqikytnrumsi4gZ logs]# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 6.2.6 7614ae9453d1 23 months ago 113MB
mysql 5.7 c20987f18b13 23 months ago 448MB1.2 创建reids配置文件 新建文件夹
1-新建文件夹
[rootsyf/]# mkdir -p /data/dockerData/redis/conf
[rootsyf/]# cd /data/dockerData/redis/conf2-创建文件
[rootsyf conf]# touch redis.config
[rootsyf conf]# ls
my.config3-编写文件内容 进入后 i 子母键插入黏贴下面配置:wq! 保存并退出
[rootsyf conf]# vim my.config 本次使用的配置文件注意看我注释
# Redis服务器配置 # 绑定IP地址
#解除本地限制 注释bind 127.0.0.1
#bind 127.0.0.1 # 服务器端口号
port 6379 #配置密码不要可以删掉
requirepass syf133618#这个配置不要会和docker -d 命令 冲突
# 服务器运行模式Redis以守护进程方式运行,默认为no改为yes意为以守护进程方式启动可后台运行除非kill进程改为yes会使配置文件方式启动redis失败如果后面redis启动失败就将这个注释掉
daemonize no#当Redis以守护进程方式运行时Redis默认会把pid写入/var/run/redis.pid文件可以通过pidfile指定(自定义)
#pidfile /data/dockerData/redis/run/redis6379.pid #默认为noredis持久化可以改为yes
appendonly yes#当客户端闲置多长时间后关闭连接如果指定为0表示关闭该功能
timeout 60
# 服务器系统默认配置参数影响 Redis 的应用
maxclients 10000
tcp-keepalive 300#指定在多长时间内有多少次更新操作就将数据同步到数据文件可以多个条件配合分别表示900秒15分钟内有1个更改300秒5分钟内有10个更改以及60秒内有10000个更改
save 900 1
save 300 10
save 60 10000# 按需求调整 Redis 线程数
tcp-backlog 511# 设置数据库数量这里设置为16个数据库
databases 16# 启用 AOF, AOF常规配置
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb# 慢查询阈值
slowlog-log-slower-than 10000
slowlog-max-len 128# 是否记录系统日志默认为yes
syslog-enabled yes #指定日志记录级别Redis总共支持四个级别debug、verbose、notice、warning默认为verbose
loglevel notice# 日志输出文件默认为stdout也可以指定文件路径
logfile stdout# 日志文件
#logfile /var/log/redis/redis-server.log# 系统内存调优参数
# 按需求设置
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
下面是关于配置文件详解自己参考的使用
daemonize no
默认情况下redis不是在后台运行的。如果需要在后台运行把该项的值更改为yes。pidfile /var/run/redis.pid
当redis在后台运行的时候redis默认会把pid文件放在/var/run/redis.pid你可以配置到其他位置。当运行多个redis服务时需要指定不同的pid文件和端口。port 6379
指定redis运行的端口默认是6379。bind 127.0.0.1
指定redis只接收来自于该IP地址的请求看如果不进行设置那么将处理所有请求。在生产环境中最好设置该项。loglevel debug
指定日志记录级别其中redis总共支持四个级别debug、verbose、notice、warning默认为verbose。
1 . debug表示记录很多信息,用于开发和测试
2verbose表示记录有用的信息, 但不像debug会记录那么多
3notice表示普通的verbose常用于生产环境
4warning 表示只有非常重要或者严重的信息会记录到日志logfile /var/log/redis/redis.log
配置log文件地址,默认值为stdout。若后台模式会输出到/dev/null。databases 16
可用数据库数默认值为16默认数据库为0数据库范围在0~15之间切换彼此隔离。save
保存数据到磁盘格式为save指出在多长时间内有多少次更新操作就将数据同步到数据文件rdb。相当于条件触发抓取快照这个可以多个条件配合。
save 9001就表示900秒内至少有1个key被改变就保存数据到磁盘。rdbcompression yes
存储至本地数据库时(持久化到rdb文件)是否压缩数据默认为yes。dbfilename dump.rdb
本地持久化数据库文件名默认值为dump.rdb。dir ./
工作目录数据库镜像备份的文件放置的路径。这里的路径跟文件名要分开配置是因为redis在进行备份时先会将当前数据库的状态写入到一个临时文件中等备份完成时再把该临时文件替换为上面所指定的文件。 而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中AOF文件也会存放在这个目录下面。 注意这里必须指定一个目录而不是文件。slaveof
主从复制设置该数据库为其他数据库的从数据库。设置当本机为slave服务时设置master服务的IP地址及端口。 在redis启动时,它会自动从master进行数据同步。masterauth
当master服务设置了密码保护时(用requirepass制定的密码)slave服务连接master的密码。slave-serve-stale-data yes
当从库同主机失去连接或者复制正在进行从机库有两种运行方式
如果slave-serve-stale-data设置为 yes(默认设置)从库会继续相应客户端的请求。
如果slave-serve-stale-data是指为no除去INFO和SLAVOF命令之外的任何请求都会返回一个错误SYNC with master in progress。repl-ping-slave-period 10
从库会按照一个时间间隔向主库发送PING可以通过repl-ping-slave-period设置这个时间间隔,默认是10秒。repl-timeout 60
设置主库批量数据传输时间或者ping回复时间间隔默认值是60秒一定要确保repl-timeout大于repl-ping-slave-period。requirepass foobared
设置客户端连接后进行任何其他指定前需要使用的密码。因为redis速度相当快所以在一台比较好的服务器平台下, 一个外部的用户可以在一秒钟进行150K次的密码尝试这意味着你需要指定非常强大的密码来防止暴力破解。renamecommand CONFIG “”
命令重命名在一个共享环境下可以重命名相对危险的命令比如把CONFIG重名为一个不容易猜测的字符
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
如果想删除一个命令直接把它重命名为一个空字符即可rename-command CONFIG “”。maxclients 128
设置同一时间最大客户端连接数默认无限制。redis可以同时打开的客户端连接数为redis进程可以打开的最大文件描述符数。
如果设置 maxclients 0表示不作限制。当客户端连接数到达限制时redis会关闭新的连接并向客户端返回max number of clients reached错误信息。maxmemory
指定redis最大内存限制。redis在启动时会把数据加载到内存中达到最大内存后redis会先尝试清除已到期或即将到期的keyredis同时也会移除空的list对象。当此方法处理后,仍然到达最大内存设置将无法再进行写入操作但仍然可以进行读取操作。
注意redis新的vm机制会把key存放内存value会存放在swap区。maxmemory-policy volatile-lru
当内存达到最大值的时候redis会选择删除哪些数据呢有五种方式可供选择
1volatile-lru代表利用LRU算法移除设置过期时间的key(LRU最近使用LeastRecentlyUsed)
2allkeys-lru代表利用LRU算法移除任何key
3volatile-random代表移除设置过过期时间的随机key
4allkeys_random代表移除一个随机的key
5 volatile-ttl代表移除即将过期的key(minor TTL)
6 noeviction代表不移除任何key只是返回一个写错误
注意对于上面的策略如果没有合适的key可以移除写的时候redis会返回一个错误。appendonly no
默认情况下redis会在后台异步的把数据库镜像备份到磁盘但是该备份是非常耗时的而且备份也不能很频繁。 如果发生诸如拉闸限电、拔插头等状况那么将造成比较大范围的数据丢失所以redis提供了另外一种更加高效的数据库备份及灾难恢复方式。
开启append only模式之后redis会把所接收到的每一次写操作请求都追加到appendonly. aof文件中。当redis重新启动时会从该文件恢复出之前的状态但是这样会造成appendonly. aof文件过大所以redis还支持BGREWRITEAOF指令对appendonly.aof。appendfilename appendonly.aof
AOF文件名称默认为appendonly.aof。appendfsync everysec
redis支持三种同步AOF文件的策略
1no代表不进行同步,系统去操作
2always代表每次有写操作都进行同步
3everysec代表对写操作进行累积每秒同步一次默认是everysec按照速度和安全折中这是最好的slowlog-log-slower-than 10000
记录超过特定执行时间的命令。执行时间不包括I/O计算比如连接客户端返回结果等。只是命令执行时间可以通过两个参数设置slow log一个是告诉Redis执行超过多少时间被记录的参数slowlog-log-slower-than(微妙)另一个是slow log 的长度。
当一个新命令被记录的时候最早的命令将被从队列中移除下面的时间以微妙微单位因此1000000代表一分钟。注意制定一个负数将关闭慢日志而设置为0将强制每个命令都会记录。hash-max-zipmap-entries 512 hash-maxz-ipmap-value 64
当hash中包含超过指定元素个数并且最大的元素没有超过临界时hash将以一种特殊的编码方式(大大减少内存使用)来存储这里可以设置这两个临界值。Redis Hash对应Value内部实际就是一个HashMap实际这里会有2种不同实现。这个Hash的成员比较少时redis为了节省内存会采用类似一维数组的方式来紧凑存储而不会采用真正的HashMap结构对应的value redisObject的encoding为zipmap。当成员数量增大时会自动转成真正的HashMap此时encoding为ht。hash-max-zipmap-entries 512 512
list数据类型多少节点以下会采用去指针的紧凑存储格式。list-max-ziplist-value 64
数据类型节点值大小小于多少字节会采用紧凑存储格式。setmaxintsetentries 512
set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储。zsetmaxziplistentries 128
zsort数据类型多少节点以下会采用去指针的紧凑存储格式。zsetmaxziplistvalue 64
zsort数据类型节点值大小小于多少字节会采用紧凑存储格式。activerehashing yes
redis将在每100毫秒时使用1毫秒的CPU时间来对redis的hash表进行重新hash可以降低内存的使用。
当你的使用场景中有非常严格的实时性需要不能够接受redis时不时的对请求有2毫秒的延迟的话把这项配置为no。如果没有这么严格的实时性要求可以设置为yes以便能够尽可能快的释放内存。三、运行容器使用上面配置文件启动
docker run -p 6379:6379 --name redis6.2.6 -v /data/dockerData/redis/conf/redis.config:/etc/redis/redis.config -v /data/dockerData/redis/data:/var/lib/redis -v /data/dockerData/redis/logs:/logs -d redis:6.2.6 redis-server /etc/redis/redis.config
上面命令参数解释 –privilegedtrue 容器内的root拥有真正root权限否则容器内root只是外部普通用户权限 -p端口映射此处映射 主机6379端口 到 容器的6379端口 -v主机和容器的目录映射关系:前为主机目录之后为容器目录 新建配置文件书卷 -v /data/dockerData/redis/conf/redis.config:/etc/redis/redis.config redis数据保存数据卷 -v /data/dockerData/redis/data:/var/lib/redis reids日志文数据卷 -v /data/dockerData/redis/logs:/logs -d : 表示使得容器后台一直运行 redis-server /etc/redis/redis.conf指定配置文件启动redis-server进程 –appendonly yes开启数据持久化 –requirepass 123456 设置你的密码设置密码比较安全 运行步骤
1-查看镜像
[rootiZuf6hxabqikytnrumsi4gZ conf]# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 6.2.6 7614ae9453d1 23 months ago 113MB
mysql 5.7 c20987f18b13 23 months ago 448MB2-查看容器
[rootiZuf6hxabqikytnrumsi4gZ conf]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2a384f369e0b mysql:5.7 docker-entrypoint.s… 3 minutes ago Up 3 minutes 0.0.0.0:3306-3306/tcp, :::3306-3306/tcp, 33060/tcp mysql5.73-以配置文件方式启动redis
[rootiZuf6hxabqikytnrumsi4gZ conf]# docker run -p 6379:6379 --name redis6.2.6 -v /data/dockerData/redis/conf/redis.config:/etc/redis/redis.config -v /data/dockerData/redis/data:/var/lib/redis -v /data/dockerData/redis/logs:/logs -d redis:6.2.6 /etc/redis/redis.config4-查看启动的容器
[rootiZuf6hxabqikytnrumsi4gZ conf]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a34aff536643 redis:6.2.6 docker-entrypoint.s… 59 seconds ago Up 58 seconds 0.0.0.0:6379-6379/tcp, :::6379-6379/tcp redis6.2.6
2a384f369e0b mysql:5.7 docker-entrypoint.s… 2 hours ago Up 2 hours 0.0.0.0:3306-3306/tcp, :::3306-3306/tcp, 33060/tcp mysql5.7四、测试
1-进入redis容器
[rootiZuf6hxabqikytnrumsi4gZ logs]# docker exec -it a34aff536643 bash2-连接redis
roota34aff536643:/data# redis-cli3-输入密码
127.0.0.1:6379 auth 1234
OK
最后一定要开放防火墙 输入指令firewall-cmd --zonepublic --add-port6379/tcp --permanent开放防火墙指定端口。输入指令firewall-cmd --reload重新加载防火墙。 设置开机启动 开机启动 docker update --restartalways 容器ID 取消 docker update --restartno 容器ID