认识redis:
Redis是Remote Dictionary Server(远程数据服务)的缩写,是把数据存储到内存中。
Nosql not only sql 不仅仅是sql。泛指非关系数据库。Key=>value进行存储数据。Memcache、redis、mongodb同属nosql产品。
数据结构:String Hash List Set Sorted set pub/sub Transactions
多个库的作用或者使用:
①公司有多个业务或者程序,可以一个业务使用一个库
②不同的数据类型,存储到不同库
redis两种备份数据方式:
①snappshoting(快照)默认开启,可以修改/redis/bin/dump.rdb进行频率的修改。m分钟内进行了n次修改
②append only file (aof)需要在配置文件开启:appendonly yes;appendfilename 'appendonly.aof';appendfsync eversec;分别是开启和设置需要保存到的文件以及频率,这个是每秒写一次。
内存存储数据,在机器重启之后,数据就会丢失。 会定时备份数据到硬盘中,这种机制被称为数据持久化。
什么场合使用:
①[Sort Set]排行榜应用,取top n操作,例如sina微博热门话题
②[List]获得最新N个数据 或 某个分类的最新数据
③计数器应用
④[Set]sns(social network site)获得共同好友
⑤[Set]防攻击系统(ip判断)等等
⑥[pub/sub]订阅,消息分发系统。当key更改时,都会收到通知。
对比memecache
①Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
②Redis支持master-slave(主—从)模式应用。
③Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
④Redis单个value的最大限制是1GB, memcached只能保存1MB的数据
⑤redis单核单线程,memcached是多核多线程。
如果只是简单的缓存数据,两者都可以。
redis开发规范
1:冷热数据分离,不要将所有数据都存储在redis中(冷数据即访问量低,或是一些用户画像等静态数据)
2: 不同的业务数据要分开存储
3:存储的key一定要设置过期时间(作为缓存Cache使用时)
4:对于必须要存储的打文本数据一定要压缩后存取
5:线上redis禁止使用keys正则匹配操作。(以为redis单线程,容易阻塞)
6:可靠的消息队列服务(list的RpopLpush命令)
7:谨慎全量操作HASH,SET等集合结构(HGETALL)
8:根据业务场景合理使用不同的数据结构类型
9:命名规范(如系统名:业务名:业务数据:其他)
10:线上禁止使用monitor命令(调试命令,实时打印出reidis服务器接收到的命令)
11:禁止大string(redis支持512MB的string,但是IO不允许)
12:redis容量(键数建议1kw之内,避免回收不及时)
网友评论