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服务的统计信息