Redis安装与配置

 redis作为NoSQL数据库的一种应用,响应速度和命中率上还是比较高效的。项目中需要用集中式可横向扩展的缓存框架,做了一点调研,即便redis、memcached存在效率上的差异(具体比较参考http://timyang.net/data/mcdb-tt-redis/),但其实都能满足目前项目的需求;但是redis还是比较风骚的,支持链表和集合操作,支持正则表达式查找key,目前项目缓存的结果大多是链表,如果链表新增或者修改数据的话,redis就体现出了极大的优势(memcached只能重新加载链表,redis可以对链表新增或者修改)

1:下载redis
下载地址 http://code.google.com/p/redis/downloads/list
推荐下载redis-1.2.6.tar.gz,之前这个版本同事已经有成功安装运行的经验,redis-2.0.4.tar.gz 这个版本我安装后无法操作缓存数据,具体原因后续再说

2:安装redis
下载后解压 tar zxvf redis-1.2.6.tar.gz 到任意目录,例如/usr/local/redis-1.2.6

解压后,进入redis目录
    cd /usr/local/redis-1.2.6
    make PREFIX=/usr/local/redis install
  
    //安装完成后,会/usr/local/redis/bin/目录下生成5个可执行文件, 
    ls /usr/local/redis/bin/  
    redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-server  
    redis-server:Redis服务器的daemon启动程序  
    redis-cli:Redis命令行操作工具。  
    redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能  
        redis-benchmark -n 100000 -c 60
        向redis服务器发送100000个请求,每个请求附带60个并发客户端
    redis-check-dump: 检查file.rdb 文件  
    redis-check-aof:检查file.aof 文件
拷贝文件
mkdir /usr/local/redis/etc
cp redis.conf /usr/local/redis/etc  这个文件时redis启动的配置文件


3:修改配置
修改配置之前,请将redis.conf copy一份到/etc/目录下
    daemonize no
改成
    daemonize yes
这两个参数
    loglevel warning 
    logfile /var/log/redis.log 
取消注释
    syslog-enabled no #这个改成syslog-enabled yes
    syslog-facility local0
数据文件目录
    # The working directory.
    #
    # The DB will be written inside this directory, with the filename specified
    # above using the 'dbfilename' configuration directive.
    #
    # Also the Append Only File will be created inside this directory.
    #
    # Note that you must specify a directory here, not a file name.
    dir /var/db/redis
内存,连接数设置

    maxmemory 256000000
    maxclients 500

设置内存分配策略(可选,根据服务器的实际情况进行设置)
/proc/sys/vm/overcommit_memory
可选值:0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

值得注意的一点是,redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为8G,这个时候也要同样分配8G的内存给child,如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)

开启redis端口,修改防火墙配置文件
    vi /etc/sysconfig/iptables

加入端口配置
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT

重新加载规则
    service iptables restart 

4:启动redis服务
    [root@Architect redis]# pwd
    /usr/local/redis
    [root@Architect redis-1.2.6]# bin/redis-server /etc/redis.conf

查看进程,确认redis已经启动

    [root@Architect redis-1.2.6]# ps -ef | grep redis
    root       401 29222  0 18:06 pts/3    00:00:00 grep redis
    root     29258     1  0 16:23 ?        00:00:00 redis-server /etc/redis.conf

如果这里启动redis服务失败,一般情况下是因为redis.conf文件有问题,建议检查或找个可用的配置文件进行覆盖,避免少走弯路,这里建议,修改redis.conf,设置redis进程为后台守护进程

    # By default Redis does not run as a daemon. Use 'yes' if you need it.
    # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
    daemonize yes

5:测试redis
    [root@Architect redis-1.2.6]# redis-cli
    redis> set name songbin
    OK
    redis> get name 
    "songbin"

6:关闭redis服务
    redis-cli shutdown

redis服务关闭后,缓存数据会自动dump到硬盘上,硬盘地址为redis.conf中的配置项dbfilename dump.rdb所设定
强制备份数据到磁盘,使用如下命令

    redis-cli save 或者 redis-cli -p 6380 save(指定端口)


7:启动 Redis 服务
src/redis-server或者src/redis-server redis.conf

src/redis-server redis.conf 1>log.log 2>errlog.log

1为标准输出,2为错误输出
将 Redis 作为 Linux 服务随机启动
vi /etc/rc.local, 加入代码:

/root/install/redis-2.4.9/src/redis-server

 

 


=========================redis.conf更多配置==========================
《 EOF
    #daemonize:是否以后台daemon方式运行
  
    daemonize yes
  
    #pidfile:pid文件位置
  
    pidfile /var/run/redis.pid
  
    #bind:监听的ip地址
  
    bind 10.0.100.70
  
    #port:监听的端口号
  
    port 6379
  
    #timeout:请求超时时间,单位秒
  
    timeout 120
  
    #loglevel:log信息级别,支持四个级别,debug,notice,verbose,warning
  
    loglevel warning
  
    #日志文件位置
  
    logfile /usr/local/redis/var/redis.log
  
    #databases:开启数据库的数量
  
    databases 16
  
    ##snapshoot
  
    #save * *:保存快照的频率,第一个*表示多长时间,第二个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
  
    #在900秒之内,redis至少发生1次修改则redis抓快照到磁盘
  
    save 900 1
  
    #在300秒之内,redis至少发生100次修改则redis抓快照到磁盘
  
    save 300 100
  
    #在60秒之内,redis至少发生10000次修改则redis抓快照到磁盘
  
    save 60 10000
  
    #rdbcompression:是否使用压缩
  
    rdbcompression yes
  
    #dbfilename:数据快照文件名(只是文件名,不包括目录)
  
    dbfilename dump.rdb
  
    #dir:数据快照的保存目录(这个是目录)
  
    dir /usr/local/redis/var
  
    ##aof
  
    #appendonly:是否开启appendonlylog,AOF是另一种持久化方式,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
  
    appendonly no
  
    #appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
  
    appendfsync everysec
  
    no-appendfsync-on-rewrite no
  
    auto-aof-rewrite-percentage 100
  
    auto-aof-rewrite-min-size 64mb
  
    ##slow log
  
    #如果操作时间大于0.001秒,记录slow log,这个log是记录在内存中的,可以用redis-cli slowlog get 命令查看
  
    slowlog-log-slower-than 10000
  
    #slow log 的最大长度
  
    slowlog-max-len 128
  
    ##virtual memory
  
    #是否使用虚拟内存
  
    vm-enabled no
  
    #swap文件,不同redis swap文件不能共享。而且生产环境下,不建议放在tmp目录。
  
    vm-swap-file /tmp/redis.swap
  
    #vm大小限制。0 不限制,建议60-80% 可用内存大小
  
    vm-max-memory 0
  
    #根据缓存内容大小调整,默认32字节
  
    vm-page-size 32
  
    #page数。每 8 page 会占用1字节内存
  
    vm-pages 134217728
  
    #m 最大io线程数。注意: 0 标志禁止使用vm(开关真多)
  
    vm-max-threads 4
  
    #
  
    hash-max-zipmap-entries 512
  
    hash-max-zipmap-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
  
    activerehashing yes
  
    ##limit
  
    #最大使用内存单位<bytes>,默认情况下redis会占用可用的所有内存
  
    maxmemory 256000000
  
    #maxclients 最大连接数, 0 表示不限制
  
    maxclients 1024
  
    ##replication
  
    requirepass dongnan
  
    #slave
  
    #master的ip地址与端口号
  
    #slaveof 10.0.100.70 6379
  
    #设置slave到master的认证
  
    #masterauth dongnan
  
    #在master服务器挂掉或者同步失败时,从服务器是否继续提供服务
  
    slave-serve-stale-data yes
  
    EOF

===========================



客户端连接
src/redis-cli

停止redis服务:
src/redis-cli shutdown

增删改查:

keys *
取出当前匹配的所有key

> exists larry
(integer) 0

当前的key是否存在

del lv
删除当前key

expire
设置过期时间

> expire larry 10
(integer) 1

> move larry ad4
(integer) 1

移动larry键值对到ad4数据库

> persist lv
(integer) 1
移除当前key的过期时间

randomkey

随机返回一个key

rename
重命名key

type
返回值的数据类型

 type testlist
list


> ping
PONG

测试连接是否还在

>echo name

"larry"

打印

> select ad4databank
OK
数据库切换

> quit
退出连接

> dbsize
(integer) 12

当前数据库中key的数量

> info
服务器基本信息

monitor

实时转储收到的请求

config get
获取服务器的参数配置

flushdb
清空当前数据库

flushall
清除所有数据库

阅读更多
想对作者说点什么? 我来说一句

Linux环境Redis安装配置

2018年03月05日 16KB 下载

redis安装以及测试文档

2018年04月27日 250KB 下载

redis安装与开发实例

2014年11月20日 5.33MB 下载

没有更多推荐了,返回首页

不良信息举报

Redis安装与配置

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭