NoSQL之Redis数据库
浏览量:754
一、redis简介
1.1 redis介绍
RemoteDictionary Server是一个基于Key-value键值对的持久化数据库数据库存储系统,redis和memcached缓存服务器很像,但是redis支持的数据存储类型更丰富,包括String,list,set和zset等
这些数据类型都支持push/pop,add/remove及取交集,并集和差集及更丰富的操作,而这些操作都是原子性的,在此基础上,redis支持各种不同方式的排序,雨memcached缓存服务一样,为了保证销量,数据都是缓存再内存中提供服务的,和memcached不同的是redis持久化缓存服务器还会周期行的把更新的数据写入到磁盘以及把修改的操作记录追加到文件里记录下来,比memcached更有优势的是redis还支持master-slave主从同步,这点累死关系型数据库mysql
redis的出现在一定程度上弥补了memcached这类key-value内存缓存服务的不足,在部分场合可以对关系数据库起到很好的补充作用,redis提供了python,ruby,erlang,php客户端,使用很方便.
redis官方文档如下:
http://www.redis.io/documentation
1.2 redis的优点
性能很高:redis支持超过100K每秒的读取频率
丰富数据类型,redis支持二进制的String,Lisst,Hashes,Sets及Ordered Sets等数据类型操作
原子:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行
丰富的特性:redis还支持publiss/subscribe,通知,key过期等等特性
redis支持异机主从复制
1.3 redis 的数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

1.4 redis应用场景
传统的Mysql+Memcached的网站架构遇到的问题
Mysql数据实际上是适合进行海量数据存储的,加上通过Memcached将热点数据存放到内存cache里,达到加速数据访问的目的,绝大部份公司都曾经使用过这样的架构,但是随着业务数据量的不断增加,和访问量的持续增长,很多问题就会暴露出来。
q 需要不断的对Mysql进行拆库拆表,Memcached也需要不断跟着扩容,扩容和维护工作占据大量开发运维时间
q memcached与Mysql数据库数据导致一致性问题是个老大难
q memcached数据命中率低活着宕机,回导致大量访问直接穿透到数据库,导致mysql无法支撑访问。
跨机房cache同步一致性问题
redis的最佳场景:
q Rdis最佳食用场景的全部是数据in-memory
q redis更多场景是作为Memcached的替代品来使用
q 当需要除key/value之外的更多数据类型支持时,使用Redis更合适
q 当存储的数据不能别提出时,使用Redis更合适
更多Redis作者谈Redis应用场景htt://blog.nosqlfam.com/html/2235.html
企业场景:
1、使用Redis bitmap进行活跃用户统计
http://blog.nosqlfan.com/html/3501.html
这里对Redis数据库做了如下小结:
q 提高了DB的可拓展性,只需要将新加的数据放到新加的服务器上就可以了
q 提高了DB的可用性,只影响到需要访问的shard服务器上的数据的用户
q 提高了DB的可维护性,对系统的升级和配置可以按shard一个个来搞,对服务产生的影响较小
q 小的数据库存的查询压力小,查询更快,性能更好
使用过程中的一些经验和教训,如下时小结
q 要进行Master-slave的配置,出现服务故障时可以支持切换
q 在master侧禁用数据持久化,只需在slave上配置数据持久化
q 物理内存+虚拟内存不足,这个dump一致死着,时间久了机器挂掉,这个情况下就是灾难
q 当Redis物理内存使用超过内存总容量的3/5时就会开始比较危险了,就开始做swap,内存碎片
q 当达到最大内存时,回清空带有过期时间的key,即使key未过期时间
q redis与DB同步写的问题,先写DB,后写redis,因为内存基本上没问题
二、redis部署安装
2.1 redis下载解压编译
$ wget http://download.redis.io/releases/redis-3.2.8.tar.gz $ tar xzf redis-3.2.8.tar.gz $ cd redis-3.2.8/src
注意:二进制文件是编译完成后在src目录下,通过下面的命令启动Redis服务:
$ src/redis-server
2.2 配置redis安装包
$ make MANIFESTO=jemalloc && make PREFIX=/usr/local/redis-3.0.8 install
2.3 创建软连接
$ ln -s /usr/local/redis-3.0.8 /usr/local/redis
2.4 配置语言环境
$ LANG=en_US.UTF-8
2.5 查看redis bin目录
[root@Master ~]# tree /usr/local/redis/bin/ /usr/local/redis/bin/ ├── redis-benchmark ├── redis-check-aof ├── redis-check-rdb ├── redis-cli ├── redis-sentinel -> redis-server └── redis-server 0 directories, 6 files
说明:
redis-server:Redis服务器的daemon启动程序
redis-cli :Redis命令行操作工具,当然也可以用telnet跟其纯文本协议来操作
redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写
redis-check-aof:动态切换redis持久方式,从 RDB 切换到 AOF
redis-check-dump:用语本地数据库的检查
三、配置并启动redis服务
3.1 配置环境变量
$ echo ' PATH=/usr/local/redis/bin/:$PATH' >> /etc/profile $ source /etc/profile
3.2 创建并拷贝配置文件
$ mkdir /data/redis/conf -p $ cp /usr/local/src/redis-3.2.8/redis.conf /data/redis/conf/
3.3 设置内置参数
$ sysctl vm.overcommit_memory=1
3.4 启动redis服务
$ redis-server -f /data/redis/conf/redis.conf &
查看启动状态

3.5 关闭redis服务
$ redsi-cli shutdown $ killall redis-server
四、测试redis服务
4.1 连接到redis
[root@Master ~]# redis-cli 127.0.0.1:6379>
或者指定ip,password
redis-cli -h 127.0.0.1 -p 22 -a '123456'
详细操作:点击进入

神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。