Redis安装说明及应用场景介绍
Redis是个非常不错的开源软件,key-value存储,数据完全内存中,虽是单进程,由于其采用异步非阻塞IO操作,性能表现非凡。
虽然Redis的使用已经很广泛了,但考虑到可能有一些朋友没有使用过,还是写一些基础的,安装过程,应用场景类的文章。
Redis的特性简要列一下:
速度快:数据存于内存中
数据结构丰富: string, hash, list, set, sortedSst, bitmap
持久化:有2种持久方式 RDB,AOF
主从复制:异步复制,支持部署方式 M ->S, M ->S ->S
发布/订阅:轻量级MQ
支持key过期自动失效
支持简单的事务
单进程,原子性操作,setnx expire 可作为分布式锁
Redis安装 是在 CentOS release 6.4 64bit 安装的,过程非常简单
1、下载安装文件
cd /data/apps
wget http://download.redis.io/releases/redis-3.0.7.tar.gz
2、解压安装
tar xzf redis-3.0.7.tar.gz
cd redis-3.0.7
make
3、copy安装后生成的bin‘文件
mkdir -p /data/apps/redis-3.0.7_6379/bin
mkdir -p /data/apps/redis-3.0.7_6379/data
cd /data/apps/redis-3.0.7/src
cp -rfp redis-benchmark /data/apps/redis-3.0.7_6379/bin/redis-benchmark
cp -rfp redis-check-aof /data/apps/redis-3.0.7_6379/bin/redis-check-aof
cp -rfp redis-check-dump /data/apps/redis-3.0.7_6379/bin/redis-check-dump
cp -rfp redis-cli /data/apps/redis-3.0.7_6379/bin/redis-cli
cp -rfp redis-sentinel /data/apps/redis-3.0.7_6379/bin/redis-sentinel
cp -rfp redis-server /data/apps/redis-3.0.7_6379/bin/redis-server
cd /data/apps/redis-3.0.7
cp -rfp redis.conf /data/apps/redis-3.0.7_6379/redis.conf
cp -rfp sentinel.conf /data/apps/redis-3.0.7_6379/sentinel.conf
4、启动服务
cd /data/apps/redis-3.0.7_6379/bin
./redis-server /data/apps/redis-3.0.7_6379/redis.conf
如果看到下面的图,则说明启动成功了
由于redis默认不是以后台模式启动的,需要修改配置下。
找到这一行 daemonize no
修改为 daemonize yes
然后重新启动就可以了。
5、客户端连接使用. redis 默认使用 6379端口,不设置密码,客户端使用比较简单
cd /data/apps/redis-3.0.7_6379/bin
[root@localhost bin]# ./redis-cli
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379>
其他的命令可以参考 http://redis.io/commands 使用。更复杂的操作,需要自己去查阅官方文档了。
6、Redis所在OS的内核优化
在Redis启动的时候,打印出来一句话“WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.”
也就是说当Redis执行BGSAVE时可能由于内存不够用导致失败,需要调整 vm.overcommit_memory = 1 。 需要做如下操作:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
sysctl -p
应用场景
其实这里有好多要说,就我们自己的业务来说使用非常广泛,我先简单列一下:
1、过期key会自动删除,命令expire
这个是比较常用的,比如每日任务,key存储用户完成的任务ID,今日完成后,就标示已完成,key的失效时间设置成明日凌晨失效。
2、计数器使用
统计访问次数,限制用户访问次数等都可以利用此特性
3、实时排行榜
以前未使用redis之前,排行榜根本无法做到实时,基本是5分钟扫描统计。
直接使用SortedSet,就可以轻松来做排行榜数据
4、最新文章
这个是使用list类型,lpush和ltrim结合,可以保存最新的某个区间的数据
5、pub/sub
Redis可以作为MQ来使用,消息的发布和订阅。
主意:此特性是“forget”模式,Redis不存储消息,当Consumer端出问题时,消息就会丢失
6、作为MySQL的一个补充
可以存储业务数据,作为关系型数据库的一个补充,但前提要开启持久化,不然重启后数据就丢掉了。
7、分布式锁
这个可以参考先前的一篇文章。主要是 setnx 和 expire 相结合使用。
8、配置服务
可以作为一个配置中心来使用,存储配置信息。
9、Cache
这个自不用说了。
10、Lua
Redis支持Lua脚本,编写若干命令组合为一个小型的非阻塞事务或者更新逻辑。
当然其应用远不止上面这些点,等待着我们去挖掘。
评论
发表评论
|
|