redis内存数据库(缓存服务器)适合高并发的读写应用场景,超越磁盘IO读写的瓶颈。
*****************redis适用场合****************
1.取最新N个数据的操作2.排行榜应用,取TOP N 操作
3.需要精确设定过期时间的应用
4.计数器应用
5.Uniq操作,获取某段时间所有数据排重值
6.实时系统,反垃圾系统
7.Pub/Sub构建实时消息系统
8.构建队列系统
9.缓存
*****************安装配置****************
安装redis之前先要安装tcl
- .make test报错:
- You need tcl 8.5 or newer in order to run the Redis test
- make: *** [test] Error 1
- 安装 Tcl
- tar zxvf tcl8.6.0-src.tar.gz
- cd tcl8.6.0/unix
- ./configure
- make
- make install
- chmod -v 755 /usr/lib/libtcl8.6.so
1下载安装
- 目前最新稳定版本为:redis-2.8.17.tar.gz
- http://download.redis.io/releases/redis-2.8.17.tar.gz
- (查看Liunx版本方式:getconf LONG_BIT)
- 如果是32位:make CFLAGS="-march=i686"
- 如果是64位:make
- 要是编译失败(make clean)
- cd /opt/portal/redis/redis-2.8.8/src
- make test
- make install
2配置文件目录结构
- Redis 由四个可执行文件:redis-benchmark、<span style="color:#ff0000;">redis-cli、redis-server 、redis-sentinel</span>这4个文件,加上一个redis.conf就构成了整个redis的最终可用包。它们的作用如下:
- redis-server:Redis服务器的daemon启动程序
- redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
- redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
- redis-sentinel:redis的监控,配置后检测到master down 会将slave升级为master
- 现在就可以启动redis了,redis只有一个启动参数,就是他的配置文件路径。
- 移动配置文件位置(为了便于管理)
- mkdir -p /opt/portal/redis/bin
- mkdir -p /opt/portal/redis/conf
- mkdir -p /opt/portal/redis/logs
- cd /opt/portal/redis/redis-2.8.8
- cp redis.conf sentinel.conf /opt/portal/redis/conf
- cd /opt/portal/redis/redis-2.8.8/src
- cp redis-server redis-cli redis-sentinel redis-benchmark mkreleasehdr.sh redis-check-aof redis-check-dump /opt/portal/redis/bin
- <span style="color:#ff0000;">设置别名</span>
- vi /etc/profile
- alias redis-server='/opt/portal/redis/bin/redis-server /opt/portal/redis/conf/redis.conf'
- alias redis-cli='/opt/portal/redis/bin/redis-cli'
- 使配置文件生效
- . /etc/profile
- <h2>3.修改配置文件 </h2>
- vi /opt/portal/redis/conf/redis.conf
- 一、将daemonize no 中no改为yes [以守护进程方式启动进程]
- 二、如果是slave 需要配置说明他的master是谁:<span style="color:#ff0000;">slaveof 192.168.14.191 6379</span>
- 4.启动/随机启动:
- cd /opt/portal/redis/bin
- ./redis-server /opt/portal/redis/conf/redis.conf #启动redis并指定配置文件。
- #vi /etc/rc.local #设置随机启动。
- /opt/portal/redis/bin/redis-server /opt/portal/redis/conf/redis.conf
- 5.查看是否启动成功
- ps -ef | grep redis
- netstat -tunpl | grep 6379#查看端口是否占用。
- 6.进入客户端/退出
- cd /opt/portal/redis/bin
- ./redis-cli #进入
- quit #退出 ctrl+c
- 7.关闭redis
- pkill redis-server #关闭
- ./redis-cli shutdown #关闭
- ./redis-cli -p 6397 shutdown //关闭6397端口的redis
- 说明:关闭以后缓存数据会自动dump到硬盘上,硬盘地址见redis.conf中的dbfilename dump.rdb
- daemonize 如果需要在后台运行,把该项改为yes
- pidfile 配置多个pid的地址 默认在/var/run/redis.pid
- bind 绑定ip,设置后只接受来自该ip的请求
- port 监听端口,默认为6379
- timeout 设置客户端连接时的超时时间,单位为秒
- loglevel 分为4级,debug、verbose、notice、warning
- logfile 配置log文件地址
- databases 设置数据库的个数,默认使用的数据库为0
- save * * 保存快照的频率,第一个*表示多长时间,第二个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。
- rdbcompression 在进行镜像备份时,是否进行压缩
- Dbfilename 镜像备份文件的文件名
- Dir 数据库镜像备份的文件放置路径
- Slaveof 设置数据库为其他数据库的从数据库
- Masterauth 主数据库连接需要的密码验证
- Requirepass 设置登录时需要使用的密码
- Maxclients 限制同时连接的客户数量
- Maxmemory 设置redis能够使用的最大内存
- Appendonly 是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
- Appendfsync 设置对appendonly.aof文件同步的频率
- 以下了解即可:
- vm-enabled 是否开启虚拟内存支持
- vm-swap-file 设置虚拟内存的交换文件路径
- vm-max-memory 设置redis使用的最大物理内存大小
- vm-page-size 设置虚拟内存的页大小
- vm-pages 设置交换文件的总的page数量
- vm-max-threads 设置VM IO同时使用的线程数量
- Glueoutputbuf 把小的输出缓存存放在一起
- hash-max-zipmap-entries 设置hash的临界值
- Activerehashing 重新hash
4常用命令
- select num#选择库,默认在0库,共16个库
- auth liweijie#授权用户所需密码(密码就是redis.conf中配置的密码)
- quit/exit/crtl+C#退出客户端
- dbsize#返回库里的键的个数。
- info#显示redis服务器的相关信息。
- config get */loglevel #返回所有/指定的配置信息。
- flushdb#删除当前库中的所有键/表。
- flushall#删除所有数据库中的所有键/表
- keys * #查询所有
- keys user*#查询指定的
- exists user:001#判断是否存在。
- del name#删除指定的键。
- expire addr 10#设置过期时间
- ttl addr#查询过期时间time to live
- move age 1#将age移到1数据库。
- get age #获取
- persist age#移除age的过期时间。
- randomkey#随机返回一个key
- rename name1 name2#重命名键
- type myset#返回键的类型。
- ping #测试redis连接是否存活。
- echo lamp#输出一个lamp
5、Redis持久化机制: *****************************************************
- 1.两种方式:一、备份数据到磁盘(快照)[ snapshotting(快照)也是默认方式],主从复制也是通过rdb方式
- 二、记录操作命令[ Append-only file(缩写aof)的方式]
- 一、备份数据到磁盘(快照)[ snapshotting(快照)也是默认方式]
- save 900 1 #900秒内如果超过1个key被修改,则发起快照保存
- save 300 10 #300秒内容如超过10个key被修改,则发起快照保存
- save 60 10000
- 一定时间间隔内对Redis做一次快照,如果Redis意外Down,而还没有执行快照,那么最后一次快照的数据将会丢失。
- 二、记录操作命令[ Append-only file(缩写aof)的方式](较安全持久化)
- appendonly yes #启用aof 持久化方式
- # appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证完全的持久化
- appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
- # appendfsync no //完全依赖os,性能最好,持久化没保证
6.消息订阅***************************************************************
- public tv1 message1 发布消息
- subscribe tv1 订阅tv1
7状态&性能监控
- 安全监控-Sentinel
- Sentinel是 Redis 自带的工具,它可以对 Redis 主从复制进行监控,并实现主挂掉之后的自动故障转移。
- 在转移的过程中,它还可以被配置去执行一个用户自定义的脚本,在脚本中我们就能够实现报警通知等功能。
- 性能监控-Redis Live
- Redis Live是一个更通用的 Redis 监控方案,它的原理是定时在 Redis 上执行MONITOR命令,
- 来获取当前 Redis 当前正在执行的命令,并通过统计分析,生成web页面的可视化分析报表。
- 数据分布
- -Redis-sampler
- Redis-sampler是 Redis 作者开发的工具,它通过采用的方法,能够让你了解到当前 Redis 中的数据的大致类型,数据及分布状况。
- -Redis-audit
- Redis-audit是一个脚本,通过它,我们可以知道每一类 key 对内存的使用量。它可以提供的数据有:某一类 key 值的访问频率如何,
- 有多少值设置了过期时间,某一类 key 值使用内存的大小,这很方便让我们能排查哪些 key 不常用或者压根不用。
- -Redis-rdb-tools
- Redis-rdb-tools跟 Redis-audit 功能类似,不同的是它是通过对 rdb 文件进行分析来取得统计数据的。
- 1、redis-benchmark
- redis基准信息,redis服务器性能检测
- redis-benchmark -h localhost -p 6379 -c 100 -n 100000
- 100个并发连接,100000个请求,检测host为localhost 端口为6379的redis服务器性能
- 2、redis-cli
- redis-cli -h localhost -p 6379 monitor
- Dump all the received requests in real time;
- 监控host为localhost,端口为6379,redis的连接及读写操作
- redis-cli -h localhost -p 6379 info
- Provide information and statistics about the server ;
- 提供host为localhost,端口为6379,redis服务的统计信息