从这里成长

Redis笔记

一、关于key

1 key值最大不能超过512M(value也是一样,不能超过512M)

2 key值不能太长,不仅消耗内存而且在查找的时候增加字符串数据比较时间,如果key值较长可以采取签名(SHA1,MD5)后的值进行存储

3 在保持一地长度的时候尽量证件key值的可读性

二、set

 

1 默认情况下set是覆盖写,加上nx则如果有值则写失败,xx则如果没有值则写失败

三 list

1. 为了写数据更快,Redis lists基于Linked Lists实现

2. 阻塞式访问: 当从某list取值时,可能该key根本不存在,也就是是list里面是空,这时候应用程序会不断轮询等待该key值的插入。也就是poll模式取值,这种模式

的弊端不言而喻,这种情况redis提供了一种阻塞式访问的模式,也就是加上超时时间,当读取不存在的时候,只有过了超时时间才会返回结果。

如上,服务器等了100s才返回结果。若设置为0则无限等待

3 list可被用来实现聊天系统。还可以作为不同进程间传递消息的队列。关键是,你可以每次都以原先添加的顺序访问数据。这不需要任何SQL ORDER BY 操作,将会非常快,也会很容易扩展到百万级别元素的规模。

例如在评级系统中,比如社会化新闻网站 reddit.com,你可以把每个新提交的链接添加到一个list,用LRANGE可简单的对结果分页。

在博客引擎实现中,你可为每篇日志设置一个list,在该list中推入进博客评论,等等。

四 sorted set

1 从2.8版本开始,支持字典排序,也就是权重值完全一样的情况下按值的字典序来排

四 自动创建和销毁

1.对于所有类型,redis都是在第一次写时自动创建,当value为空时自动销毁

五 bitmap

1 reidis基于string类型,提供了类bitmap的一套api结构。由于value的最大容量是512M,因此可以设置2^32个不同的bitmap值

 六 过期数据处理

1. 只有从主服务器读取过期数据的时候才能触发删除过期数据操作,主服务器删除后会主动通知从数据库进行删除,如果直接从从数据库读取过期数据是不会删除过期数据的,照样返回值

2. 执行save或bgsave的时候会忽略过期数据,不保存到文件中

七 持久化

1) 服务器每次启动的时候会自动装载RDB文件,当开启AOF模式时,由于AOF模式更新更加频繁,则优先装载AOF文件,而非RDB文件。

2) SAVE同步阻塞保存数据,会拒绝所有客户端的请求

3) 关于BGSAVE:

1.1 执行BGSAVE命令时,所有客户端发送的SAVE/BGSAVE命令被拒绝,以防止竞争

1.2 执行BGSAVE命令时, 所有客户端发送的BGREWRITEAOF会在执行完BGSAVE命令后执行

1.3 执行BGREWRITEAOF命令时, 所有客户端发送的BGSAVE会被拒绝

1.4 通过"save"选项(注意:这里不是SAVE同步命令)可以设置保存条件

 

参考文章: 

1) http://redis.io/topics/data-types-intro

2) 《Redis设计与实现》

posted on 2015-04-20 16:59  woaiwoshi  阅读(141)  评论(0)    收藏  举报

导航