1. redis 支持的数据类型更丰富,包括 string字符串,list链表,set(集合),zset(有序集合)
2. 周期性的把更新的数据写入到磁盘,
3. 支持master-salve(主从)同步,
redis 简介
1. REmote DIctionary Server(Redis) 是一个基于key-value键值对的持久化数据库存储系统。redis和大明鼎鼎的Memcache 缓存服务很像,但是redis支持的数据类型更加丰富,包括 string字符串,list链表,set(集合),zset(有序集合)
这些数据类型都支持push/pop 、add/remove及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的,在此基础上,redis支持各种不同方式的排序。与memcached缓存服务一样,为了保证效率,数据都是缓存在内存中提供服务的。和memcache不同的是,redis持久化缓存服务还会周期的把更新的数据写入到磁盘以及把修改的操作记录追加到文件里记录下来,与memecahe更有优势的是,redis还支持master-slave(主从)同步,这点很类似于关系型数据库mysql
2. redis的出现 在一定程度上弥补了memecache这类key-value内存缓存的不足,在部分场合可以对关系型数据库又很好的补充
作用,redis提供了python、ruby、relang,php客户端,使用很方便,
官方网址:http://www.redis.io/documentation
redis的优点:
与memcache不同,可以持久化数据库
性能很高: redis能支持超过100K+每秒的读写频率
丰富的数据类型:redis支持的二进制string,lists,hashes,sets及ordered sets等数据类型
原子: redis的所有操作都是原子性的
丰富的特性: 支持publish/subscribe 通知,key过期等等特性
redis支持异机主从复制
3. redis的应用场景
传统的mysql+memcache 的网站架构遇到的问题
Mysql数据库实际上是适合海量数据存储的,加上通过memcahce将热点数据存放到cache里,达到加速访问的目的,绝大部分的公司都曾使用过这样的架构,但随着业务数据了的不断增加,和访问量的持续增长,很多问题就会暴漏出来
1. 需要不断的对mysql进行拆库、拆表,memechache也许不断的跟着扩容,扩容和维护工作占据大量的时间
2. memcache与mysql数据库一致性的问题是个老大难
3. memcahce数据命中率低或down机,会导致大量的访问直接穿透到数据库,导致数据库无法支撑
4 跨机房cache同步一致性问题
redis的最佳应用场景
1. redis的最佳应用场景是全部in-memory
2. redis更多场景是作为memchache的替代品来使用
3. 当需要除key-value之外的更多的数据类型支持时,redis更合适
4. 当存储的数据不能被剔除是,使用redis更合适
5. 支持持久化
6. 需要负载均衡的场景(redis主从同步)
redis作者谈redis应用场景:http://blog.nosqlfan.com/html/2235.html
redis部署环境搭建
cd /usr/local/src/
wget https://codeload.github.com/antirez/redis/tar.gz/2.8.22
tar zxpf 2.8.22
cd /usr/local/src/redis-2.8.22/
less README 可查看安装帮助
make MALLOC=jemalloc
make PREFIX=/usr/local/webserver/redis install
配置环境变量:
vim /root/.bash_profile
PATH=/usr/local/webserver/redis/bin/:$PATH:$HOME/bin
copy redis配置管理文件
mkdir /usr/local/webserver/redis/conf/
cp /usr/local/src/redis-2.8.22/redis.conf /usr/local/webserver/redis/conf
安装完毕
启动命令:
./redis-server /usr/local/webserver/redis/conf/redis.conf &
关闭redis
redis-cli shutdown
注: 如果报错,安提示解决
redis客户端测试方法:
[root@qing bin]# redis-cli 直接执行命令 直接就可以连上来(本机)
127.0.0.1:6379> help + <TAB> 可以展示很多命令
redis-cli 2.8.22
Type: "help @<group>" to get a list of commands in <group>
"help <command>" for help on <command>
"help <tab>" to get a list of possible help topics
"quit" to exit
127.0.0.1:6379>
127.0.0.1:6379> set qing fanqing
OK
127.0.0.1:6379> get qing
"fanqing"
[root@qing bin]# redis-cli -h 192.168.4.33 -p 6379 set ming liangming
OK
[root@qing bin]# redis-cli -h 192.168.4.33 -p 6379 get ming
"liangming"
[root@qing bin]# telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
[4240] 21 Sep 02:31:01.092 * 1 changes in 900 seconds. Saving...
[4240] 21 Sep 02:31:01.092 * Background saving started by pid 4558
[4558] 21 Sep 02:31:01.095 * DB saved on disk
[4558] 21 Sep 02:31:01.095 * RDB: 0 MB of memory used by copy-on-write
[4240] 21 Sep 02:31:01.193 * Background saving terminated with success
get qing
$7
fanqing
配置文件
redis-server:Redis服务器的daemon启动程序
redis-cli:Redis命令行操作工具。也可以用telnet根据其纯文本协议来操作
redis-benchmark:Redis性能测试工具,测试Redis在当前系统下的读写性能
redis-check-aof:数据修复
redis-check-dump:检查导出工具