redis:高性能key-value数据库,安装及主从配置

1、官方性能介绍:set达到11万次/S,get达到8.1万次/S。当数据库中的数据达到G级时,写入速度下降明显 。

2、官网:http://redis.io/  中国区网站(非常好,完美翻译了官方的文档):http://www.redis.cn/topics/cluster-spec.html
3、特别知识(非常重要):
     1)、redis是但单线程模式,使用大缓存快速CPU,而不是多核,推荐intel CPU,AMD的CPU性能只有intel CPU 的一半。
     2)、VM虚拟机上运行redis比在物理机器上慢一倍。

 

安装包下载地址:下载

 
3、安装:
     #tar -zxvf redis-2.8.19.tar.gz
     #cd redis-2.8.19
     #make
     #make install
     注意事项:1)运行redis前,在/etc/sysctl.conf中添加vm.overcommit_memory=1,否则会出现警告。
                     2)如果内存紧张,需要设定内容参数 echo 1 >/proc/sys/vm/overcommit_memory
                        意思如下:0代表内核将检查是否有足够内存给应用进程使用,如果有则内存申请通过,否则内存申请失败,并将错误信息报告给应用。
                                        1表示内核允许分配所有的物理内存,而不管当前内存状态如何。
                                        2表示内核允许分配超过所有物理内存和交换空间总和的内存。
                     3)echo never > /sys/kernel/mm/transparent_hugepage/enabled
 
4、redis的相关命令在src目录下.
    启动redis  cd/src 执行 ./redis-server
 
5、redis主从复制,如下是需要在生产环境上修改的,其他参数可以不看: vi redis.conf
     说明:redis主从模式:1、链式主从(一主多从):Master-slaver-slaver-salver,但如果第一个slave出现宕机重启,首先从master 接收 数据恢复脚本,
                                                         这个是阻塞的,如果主库数据几TB的情况恢复过程得花上一段时间,在这个过程中其他的slave就无法和主库同步了
                                      2、网状主从(多主多从):Master-salver-slaver(Master-slaver-slaver)-slaver,比如A是B的Master,但B又是C的Master。。。
     
 
    1)、redis Master配置,不能直接拷贝过去覆盖,最好逐个查看修改
     #redis运行在后台,需要修改为yes,默认为no
     daemonize yes
     #请自行修改
     port 6379
     #redis只接受来自该ip的请求,如果不设置,则接受所有请求,可以有多个空格分割如:192.168.62.155 192.168.62.153
     bind 192.168.62.155
     #客户端连接超时时间,单位秒,若客户端在这段时间没有发出任何指定,连接关闭,默认为0
      timeout 300
      logfile "./log/redis.log"
      #最大内存设置,如果redis使用超过此内存,redis首先会删除设置了expire的key,且不管是否真实过期,如果删除完了还是内存不够,则仅支持读。
      maxmemory 5gb
      #最大内存清理策略,如果超过内存,则采用lru算法删除key
      maxmemory-policy volatile-lru
      maxmemory-samples 3
      #appendfsync no
      #Mater主密码,从需要配置密码才能连接
      requirepass hezhixiong
      #默认有16个库,通过客户端命令select 0可以选择第一个数据库,编号为0-15
       databases 16
 
      2)、redis Slave配置,将Master的配置拷贝过去覆盖并修改
        #从redis绑定的IP地址
         bind 192.168.62.155
        #Master的IP和端口
         slaveof 192.168.62.155 6379
         #Master的密码
          masterauth hezhixiong
 
      3)、在根目录下建立log目录 ,在log下建立redis.log文件。
          可通过taif -f redis.log查看日志
 
6、启动和客户端命令
     一、主从redis启动:
     分别启动Master、salver服务器。
     #src/redis-server /soft/redis-2.8.19/redis.conf
 
      如下日志显示:redis主从服务器建立成功。
     [25438] 16 Mar 21:50:33.751 * Slave 192.168.62.154:6379 asks for synchronization
     [25438] 16 Mar 21:50:33.751 * Full resync requested by slave 192.168.62.154:6379
     [25438] 16 Mar 21:50:33.751 * Starting BGSAVE for SYNC with target: disk
     [25438] 16 Mar 21:50:33.751 * Background saving started by pid 25474
     [25474] 16 Mar 21:50:33.754 * DB saved on disk
     [25474] 16 Mar 21:50:33.754 * RDB: 0 MB of memory used by copy-on-write
     [25438] 16 Mar 21:50:33.772 * Background saving terminated with success
     [25438] 16 Mar 21:50:33.773 * Synchronization with slave 192.168.62.154:6379 succeeded
 
   二、客户端命令连接: 
         #-a 后面是密码
         redis-cli -h 192.168.62.154 -p 6379 -a hezhixiong
    三、客户端命令设值和取值
        set user.1.name zhangsan
        get user.1.name
        #获取键的数量
        dbsize
        flushdb:删除当前数据库中的所有key
        flushdb:删除所有数据库中的所有key
        select 0:选择第1个数据库   
        EXPIRE mykey 10  :给键mykey设置过期时间为10秒
        TTL mykey:将返回10秒,意思是mykey的过期时间是10秒。如果为0或者负数,代表没有设置过期时间。
 
6、性能测试:
     redis服务端部署完毕后,可以通过模拟器判断服务器的性能指标。
     1、如上命令在src目下自行,表示模拟500个客户端,进行1万次查询,得出的结论是29585.80 requests per second。即每秒3万次查询。
     #cd src
     #redis-benchmark -h 192.168.62.155 -p 6379 -c 500 -n 10000
     2、没有-c,默认50个客户端,进行10万次插入
      #redis-benchmark -h 192.168.62.155 -p 6379 -n 100000 -q script load "redis.call('set','foo','bar')"
     3、【推荐使用本语句进行性能测试】没有-c,默认50个客户端,随机产生100万个key-value连续进行200万次get/set/等请求的性能
      redis-benchmark -h 192.168.62.155 -p 6379 -r 1000000 -n 2000000 -t get,set,lpush,lpop -P 16 -q
       
     
//删除当前数据库中的所有Key
flushdb
//删除所有数据库中的key
flushall
//下面的命令指定数据序号为0,即默认数据库
redis-cli -n 0 keys "*" | xargs redis-cli -n 0 del 

如果要指定 Redis 数据库访问密码,使用下面的命令
redis-cli -a password -n 0 keys "*" | xargs redis-cli -a password -n 0 del
7、遗留需要继续研究的:
    1)、redis的集群
    2)、网状主从
    3)、发布订阅,可以替换远程用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章