三、下载和安装(debian)
下载: $ sudo apt-get install redis-server
配置:redis的配置文件是 redis.conf ,文件中包含了全部可能用到的参数和详细的解释
启动: $ redis-server
链接: $ redis-cli
2、支持的数据结构
Redis是一种key-value存储系统,而且Redis的key是二进制安全的,可使用任何的二进制序列做为key,普通字符串甚至JPEG文件。redis支持多种类型的数据结构:strings、lists、sets、sorted sets、hashes、bitmaps、hyperloglogs。
一、strings - 字符串
strings类型的value和key同样,能够是任何类型的字符串。
1 示例:
2 > SET name aut #设置 name 的值为 aut
3 > GET name #获取 name 的值
4 > SET age 20 #设值
5 > INCR age # num 自增 1
6 > MSET name aut age 20 #同时对多个key设值
用途举例:计数器,存储图片等二进制文件
二、lists - 列表
一个key-value列表,支持两端的添加和删除、范围内取值等操做
1 示例:
2 > RPUSH study redis #右端插入
3 > LPOP study #左端删除
4 > LRANGE study 1 5 #取出范围内的值,下标从0开始,-n表示倒数第n个位置
5 > LTRIM study 1 2 #从左边截取指定长度
用途举例:进程间通讯的消息队列,博客引擎中存储评论
三、hashes - 散列表
hashes中的一个key能够对应一个包含多个“字段 - 值”对的结构,其包含的“字段 - 值”对数只受内存限制
1 示例:
2 > HMSET user:2547 name aut school xupt age 20 #设置字段的值
3 > HGET user:2547 name #获取单个字段的值
4 > HMGET user:2547 name school #获取多个字段的值
5 > HGETALL user:2547 #获取全部字段的值
6 > HINCRBY user:2547 age 10 #将指定字段递增某个数值
用途举例:存储用户信息、物品信息
四、sets - (无序)集合
sets用于存储无序而且无重复的数据,提供了集合内的插入删除,集合间的交并等操做
1 示例:
2 > SADD score 98 95 64 #插入元素
3 > SMEMBERS score #获取全部元素
4 > SISMEMBER score 80 #测试某个元素是否在集合中
5 > SINTER score1 score2 #获取两个集合的交集
6 > SRANDMEMBER score #随机获取集合中的一个元素
用途举例:存储具备某种共同属性的全部对象
五、sorted sets - (有序)集合
sorted sets使用一个浮点数score来对集合内的元素进行排序,当score相同时按字母序进行排序
1 示例:
2 > ZADD user 2547 aut #插入元素,若是元素已经存在,则更新score
3 > ZRANGE user 0 -1 #获取指定范围内的元素
4 > ZRANK user aut #获取指定元素的排名
5 > ZRANGEBYSCORE user -inf 2000 withscores #获取score大于等于2000的元素,并把score一并打印出来
用途举例:存储排名信息
六、bitmaps - 位图
bitmaps以位为单位来实现某些标记功能,提供了设值/取值、统计等操做
1 示例:
2 > SETBIT key 10 1 #设置指定位为1
3 > GETBIT key 10 #获取指定位的值
4 > BITCOUNT key #统计指定元素的位为1的位数
用途举例:标记用户ID(是否已注册、在线仍是离线)
七、hyperloglogs - (不知道该怎么翻译~~)
1 示例:
2 > PFADD str1 "apple" "banana" "cherry" #添加元素
3 > PFCOUNT str1 #统计str1的近似基数
4 > PFMERGE str1&2 str1 str2 #将str1和str2合并到str1&2中
用途举例:统计访问网站的独立IP数量
其余经常使用操做:
1 > EXISTS key #检查key是否存在
2 > DEL key #删除key
3 > TYPE key #检测key的类型
4 > EXPIRE key 5 #设置key的有效时间为5秒
5 > TTL key #获取key的剩余有效时间
3、磁盘持久化
因为 Redis 是一个内存中的数据结构存储系统,全部数据都在内存中操做,当须要把数据永久保存下来的时候,就须要使用 Redis 持久化功能。持久化就是把数据从内存写入到磁盘,也被称为“落地”,Redis 提供了如下几种持久化方式:
- RDB:在指定的时间间隔内对数据进行快照存储;
- AOF:在每次对记录的写操做以后都将操做命令写入日志文件;
- 不使用持久化:记录只在服务器运行时存在于内存;
一、RDB
RDB持久化在指定的时间间隔内(或者知足某个指定条件时)将数据保存到一个名为dump.rdb的二进制文件中。
工做方式:
①Redis fork 一个子进程;
②子进程将数据集写入一个临时RDB文件中;
③Redis 用新的RDB文件替换原来的RDB文件,并删除旧文件。
优势:
- RDB文件紧凑且单一,能够方便地传送到其余备份中心,适用于灾难恢复;
- 持久化工做由子进程完成,保证最大化Redis的性能;
- 当恢复比较大的数据集的时候,因为RDB是直接恢复,速度会更快一些(较AOF);
缺点:
- 若是持久化间隔较大的话,容易丢失过多数据;
- 而若是持久化太频繁,则不断的fork会严重下降Redis的性能;
使用建议:天天保存过去一段时间的数据,每小时保存过去24个小时的数据,再搭配AOF一块儿使用。
二、AOF
AOF在每次执行完改变数据集的命令后(具体有不一样的策略),都将该命令追加到AOF文件的末尾,也就是保存操做的命令,恢复时经过从新执行保存的命令来恢复文件。
工做方式:
①Redis fork一个子进程,子进程建立新的AOF文件;
②子进程将原来的AOF文件内容写入新文件中;
③Redis将执行过的修改命令写入新文件中;
④Redis删除旧文件。
优势:
- 多种不一样的fsync策略使得丢失的数据量降到最小;
- AOF文件仅仅是追加命令,因此节省空间,而且容易被人读懂,方便恢复;
- Redis能够在AOF文件体积变得过大时,自动在后台对AOF进行重写,重写后的AOF文件仅仅包含了恢复当前数据集的最小命令集合;
缺点:
- 因为保存的是命令,因此AOF文件比RDB文件要大;
- 根据使用的fsync策略,AOF的速度可能会慢于RDB;
使用建议:使用每秒fsync的策略。
关于持久化的建议:
- 若是数据只有在服务器运行时存在,那么不用选择持久化;
- 若是能够承受数分钟内数据丢失,那么能够只使用RDB持久化;
- 若是要求数据实时更新,那么可使用每秒fsync策略的AOF持久化;
- 具体能够根据应用场景将两种持久化方式配合使用。
①Redis的最佳使用场景是所有数据in-memory;
②Redis的更多场景是做为Memcached的替代者来使用;
③当须要更多的数据类型支持时,Redis更合适;
④当存储的数据不能被剔除时,使用Redis更合适。
(全文完)