大话Redis基础
优质
小牛编辑
131浏览
2023-12-01
前期多做功课,摆对正确姿势去使用redis可以加快请求数据的响应时间,然而噬无忌惮的使用会让你为内存问题而烦恼,从长远的角度看这个不仅仅是只要加几条内存就能解决的问题
- redis是Key Value nosql数据库,数据存储在内存中,单进程,自己实现了一套异步事件处理,虽然单进程但是数据库处理很快,异步持久化;
- 持久化方式:RDB(数据快照),AOF(日志追加的方式)进行异步持久化
- 支持集群
redis有五种的数据类型:
- string 字符串类型
- 字符串类型是redis中的最基本的数据类型,也是其他4种数据类型的基础,它能存储任何形式的字符串,包括二进制数据
- hash 哈希表类型
- 哈希类型是一个字符串类型的字段和字段值的映射表。哈希类型适合存储对象。相较于将对象每一个字段存成当个字符串类型,将一个对象存成在hash类型会占用更少的内存,并且可以更方便的存取整个对象
- list 链表类型
- 链表类型可以存储一个有序的字符串列表,内部是使用双向链表实现的。所以我们通常用链表类型的LPUSH和LPOP或者RPUSH和RPOP实现栈的功能,用LPUSH和RPOP或者RPUSH和LPOP实现队列的功能
- set 无序集合类型
- 集合类型和数学中集合概念相似,比如集合中的元素是唯一的,无序的,集合与集合之间可以进行交并差等操作
- zset 有序集合类型
- 有序集合类型和集合类型一样,只不过多了一个“有序”,有序集合中每一个元素都关联了一个分数,虽然集合中每一个元素都不同的,但是他们的分数却可以相同
注意:
- redis的数据都是存储在内存里的;
- 2.0以上好像是可以开启VM虚拟内存(把磁盘分配部分作为虚拟内存)的功能,通过内部机制把冷数据放到虚拟内存里,常用的数据还是在内存中;
- redis只能是作为热数据(经常被并发查询的)的缓存,不能把redis当成数据库去使用
内存控制与优化:
- 存储的数据的控制:
- 控制数据字段(序列化对象的时候不用的字段不要读到redis,减少存储数据量)
- 设置过期时间
- 热数据存储(冷数据过滤移除,或者不存)
- 不存储长期累加增长的数据,尤其是可能成为大数据的,(可以考虑使用 mongodb)
redis其他辅助:
- 查看配置:config get *
- 查看信息:info
- 其他命令:
.NET类库:
- 正在使用版本:ServiceStack.Redis 3.9.71.0,>=4.0版本有限制连接池的数量,需要收费
- StackExchange.Redis
下载:http://download.csdn.net/detail/shi1984/8916095
博客: http://www.cnblogs.com/bnbqian/p/4962855.html
github: https://github.com/StackExchange/StackExchange.Redis
当前我们的应用场景:
- STRING
存储信息对象序列化JSON格式
- HASH:
经常被并发请求的小数据查询,如:最近五日的超高返商品数据,存储在Hash中,field=商品ID,value=商品信息(对象序列化JSON格式)
- LIST:
作为信息队列使用,不断的Lpush数据到List中,rpop数据出来入库,或者处理。
- ZSET:
排序列表,如搜索关键字排名
- SET 相对比较少去使用
总结:
- 前期多做功课,摆对正确姿势去使用redis可以加快请求数据的响应时间,然而噬无忌惮的使用会让你为内存问题而烦恼,从长远的角度看这个不仅仅是只要加几条内存就能解决的问题
总结时间:2016-04-01