redis
Posted 宋songsong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis相关的知识,希望对你有一定的参考价值。
redis的介绍
mysql是以文件的方式保存的硬盘中的。就运行速度应该是按cpu、内存、硬盘的速度由快到慢
而redis就是运用了内存的读取速度比硬盘快很多的原理上,开发的一款内存高速缓冲数据库。数据模型为key-value。
支持丰富的数据结构:String 、list、 hash、 set、 sorted set、持久化保证的数据安全。
缓存分为:数据缓存、页面缓存
redis的优点:
1.不仅仅支持简单的k/v类型的数据,同时还支持了list、set、zset、hash等数据结构的存储
2.redis支持master-slave(主从)模式应用。
3.redis支持数据的持久化、将内存的数据保存在磁盘中、重启的时候可以再次加载进行使用
4.redis单个value的最大限制是1GB,而memcached的只能保存1MB的数据。
redis的具体使用
redis中key的命名规则:除了"\\n"和空格不能作为key的名字的组成部分,其他的都可以字符数字都可以作为key的名字的组成部分,长度也没有限制。
不同redis数据库切换:最多有16个数据库提供,select 0 查询的是第一个数据库 角标从0到15。
String字符串操作类型:
redis的String类型可以包含任何数据,包含jpg图片或者序列化的对象
单个value最大值的上限是1G字节
如果只用做String类型,redis可以看作是被加上持久性的memcache。
incr : increament 增长
该指令可以对key进行累加的1的操作,默认是累加1操作,类似于i++的操作。
该指令可以针对新key和老key进行操作
新key:创建高key并累加,其值为1
已有key:key的信息值类型必须为整型。
数据类型List链表
list其实一个双向链表,通过push、pop操作从链表头部或者尾部添加删除元素、这使得list即可以做为栈也可以做为队列。
list链表应用场合:
例如正常来说获取最新10个登陆用户的信息:
select * from user_info order by build_time desc limit 10;
以上sql语句可以实现用户需求,但是数据多的时候,全部数据都要收到影响,对数据库的负载比较高,必要情况下还要给经常需要使用的字段建立索引
索引也比较耗费系统资源。(索引:比如将数据库的数据当作一本字典,比如通过拼音进行索引,如果创建的索引过的的情况下,比如字典真正的字才
100页,但是却创建了200页的索引。本身的数据才100M,但是却创建了200M的拼音的索引。这很耗费系统资源。)
如果使用list来进行以上操作、可以在list链表中只保存最新的10个数据,(先进先出,队列)当数据满10个的时候,每进来一个新的数据,就删除最老一个数据
每次就可以直接从这个链表中获取想要的数据,极大的节省了各方面资源消耗。
list操作类型: (l到r l头 r尾 按照文字的顺序)
数据类型set
redis的set是string类型的无序集合
set集合最大可以包含(2的23次方-1)个元素
关于set集合类型除了基本的添加删除操作、其他有用的操作还包含集合的取并集、交集、差集。通过这些操作很容易实现qq的好友推荐,共同好友之类的
(NoSql)
数据类型sortset排序集合类型
和set一样sorted set也是String类型元素的集合。
不一样的是每一个元素都会关联一个权
通过权值可以有序的获取集合中的元素
sort set集合中每个元素其实就是权和值的组合。
该sort set类型适用场景
获取热门帖子(回复量)信息:
select * from message order by backnum desc limit 5;
(以上需求可以通过sql实现,但是sql比较耗费系统资源)
zadd key score member : zadd key (权重) (值)
例如:zadd tiezi 100 10 (可以认为id为10的帖子的权重是100)
数据类型hash
hash数据类型存储的数据与mysql数据库中存储的一条记录非常相似(一条数据多个字段)。
关于重复元素:
set和sort set没有重复元素
list可以有重复元素
持久化
1.snap shotting(快照持久化)
该持久化默认开启,一次性吧redis中全部的数据保存一份存储在硬盘中,如果数据非常多(比如10-20G)就不适合频繁的进行该持久化操作。
快照持久化在本地硬盘中保留的数据备份文件(dump.rdb).
2.(append only file)AOP持久化
本质:把用户执行的每个“写”指令(添加、删除、修改)都备份到文件中,还原数据的时候就是执行具体写指令而已。
开启AOP持久化:修改redis.conf文件。(同时可以开启备份文件的名字,默认是qppendonly.aop)
开启AOP持久化(会清空redis内部的数据)。
配置文件被修改,需要删除旧进程、在根据新的配置文件启动新进程。 新进程启动好以后,可以看到对应的qppendonly.aop的文件
对āof备份文件做优化处理
对appendonly.aop文件做优化压缩处理。
(例如:多个 incr指令变成了一个set指令)
redis的主从模式
配置redis.conf文件,成为192.168.39.159的从服务器。
之后文件保存退出,杀死旧的redis进程,启动新的redis进程。
默认配置,从服务器禁止写入操作:(配置完成后,主服务器只要写入数据了,从服务器就能读取到数据)
以上是关于redis的主要内容,如果未能解决你的问题,请参考以下文章