Redis部署与实践

2018年5月2日16:59:11 发表评论 1,270 views
广告也精彩

Redis部署与实践

一、Redis介绍

Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。

Redis属于非关系型数据库和Memcached类似,redis也是一个key-value型存储系统。但redis支持的存储value类型相对更多,包括string(字符串)、list(列表)、set(集合)和zset(有序集合)等。这些数据类型都支持push/pop、add/remove及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。为了保证效率,redis的数据都是缓存在内存中。区别是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在基础上实现了master-slave(主从)同步。

二、redis部署

cd /usr/local/src/
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar xvf redis-3.2.8.tar.gz
ln -sv /usr/local/src/redis-3.2.8 /usr/local/redis
cd /usr/local/redis/deps/
yum install gcc
make geohash-int hiredis jemalloc linenoise lua
cd ..
make
vim redis.conf  #配置文件 QQ群搜索 redis 下载即用。
ln -sv /usr/local/redis/src/redis-server  /usr/bin/
ln -sv /usr/local/redis/src/redis-cli  /usr/bin/

启动redis

redis-server  /usr/local/redis/redis.conf

Redis部署与实践

三、Redis配置文件详解

redis常用的一些配置,对参数了解后,才方便优化与排除问题。

daemonize yes #是否以后台进程运行,默认不是后台运行
pidfile /var/run/redis/redis-server.pid    #pid文件位置
port 6379#监听端口
bind 127.0.0.1   #绑定地址,如外网需要连接,设置0.0.0.0 空格分隔
timeout 300     #连接超时时间,单位秒
loglevel notice  #日志级别,分别有:
        # debug :适用于开发和测试
        # verbose :更详细信息
        # notice :适用于生产环境
        # warning :只记录警告或错误信息
logfile /var/log/redis/redis-server.log   #日志文件位置
syslog-enabled no    #是否将日志输出到系统日志
databases 16#设置数据库数量,默认数据库为0
"############### 快照方式 ###############"
    save 900 1    #在900s(15m)之后,至少有1个key发生变化,则快照
    save 300 10   #在300s(5m)之后,至少有10个key发生变化,则快照
    save 60 10000  #在60s(1m)之后,至少有1000个key发生变化,则快照
    rdbcompression yes   #dump时是否压缩数据
    rdbchecksum no  #是否校验
    dir /var/lib/redis   #数据库(dump.rdb)文件存放目录
"############### 主从复制 ###############"
    slaveof <masterip> <masterport>  #主从复制使用,用于本机redis作为slave去连接主redis
    masterauth <master-password>   #当master设置密码认证,slave用此选项指定master认证密码
    slave-serve-stale-data yes     #当slave与master之间的连接断开或slave正在与master进行数据同步时,如果有slave请求,当设置为yes时,slave仍然响应请求,此时可能有问题,如果设置no时,slave会返回"SYNC with master in progress"错误信息。但INFO和SLAVEOF命令除外。
"############### 安全 ###############"
    requirepass foobared   #配置redis连接认证密码
"############### 限制 ###############"
    maxclients 128#设置最大连接数,0为不限制
    maxmemory <bytes>#内存清理策略,如果达到此值,将采取以下动作:
        # volatile-lru :默认策略,只对设置过期时间的key进行LRU算法删除
        # allkeys-lru :删除不经常使用的key
        # volatile-random :随机删除即将过期的key
        # allkeys-random :随机删除一个key
        # volatile-ttl :删除即将过期的key
        # noeviction :不过期,写操作返回报错
    maxmemory-policy volatile-lru#如果达到maxmemory值,采用此策略
    maxmemory-samples 3   #默认随机选择3个key,从中淘汰最不经常用的
"############### 附加模式 ###############"
    appendonly no    #AOF持久化,是否记录更新操作日志,默认redis是异步(快照)把数据写入本地磁盘
    appendfilename appendonly.aof  #指定更新日志文件名
        # AOF持久化三种同步策略:
        # appendfsync always   #每次有数据发生变化时都会写入appendonly.aof
        # appendfsync everysec  #默认方式,每秒同步一次到appendonly.aof
        # appendfsync no       #不同步,数据不会持久化
    no-appendfsync-on-rewrite no   #当AOF日志文件即将增长到指定百分比时,redis通过调用BGREWRITEAOF是否自动重写AOF日志文件。
"############### 虚拟内存 ###############"
    vm-enabled no      #是否启用虚拟内存机制,虚拟内存机将数据分页存放,把很少访问的页放到swap上,内存占用多,最好关闭虚拟内存
    vm-swap-file /var/lib/redis/redis.swap   #虚拟内存文件位置
    vm-max-memory 0    #redis使用的最大内存上限,保护redis不会因过多使用物理内存影响性能
    vm-page-size 32    #每个页面的大小为32字节
    vm-pages 134217728  #设置swap文件中页面数量
    vm-max-threads 4    #访问swap文件的线程数
"############### 高级配置 ###############"
    hash-max-zipmap-entries 512   #哈希表中元素(条目)总个数不超过设定数量时,采用线性紧凑格式存储来节省空间
    hash-max-zipmap-value 64     #哈希表中每个value的长度不超过多少字节时,采用线性紧凑格式存储来节省空间
    list-max-ziplist-entries 512  #list数据类型多少节点以下会采用去指针的紧凑存储格式
    list-max-ziplist-value 64    #list数据类型节点值大小小于多少字节会采用紧凑存储格式
    set-max-intset-entries 512   #set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储
    activerehashing yes        #是否激活重置哈希

四、redis安全配置

redis 设置临时密码

[root@elk-server ~]# redis-cli 
127.0.0.1:6379> config set requirepass 123456  ##动态设置,重启后无效
OK

Redis部署与实践

redis 设置永久密码

requirepass 123456  #添加到配置文件,重启redis即可
  • QQ精品交流群
  • weinxin
  • 微信公众号
  • weinxin
广告也精彩
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: