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的主要内容,如果未能解决你的问题,请参考以下文章

RedisRedis 安装启动使用流程

RedisRedis 安装启动使用流程

redisredis知识点总结

redisredis知识点总结

RedisRedis高级

RedisRedis简述