侧边栏壁纸
  • 累计撰写 14 篇文章
  • 累计创建 23 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Redis详解(1):初步认识Redis

漫辰夕
2022-03-16 / 0 评论 / 2 点赞 / 1140 阅读 / 3828 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-07-10,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

一、介绍

redis
Nosql 非关系型数据库 key ==> value
Redis是 Remote Dictionary Server (远程数据服务)的缩写
由意大利人antirez(Salvatore Sanfilippo) 开发的一款高速缓存数据库
软件由C语言编写,Redis的数据模型是 key-value
Redis支持丰富的数据结构,比如String list(双向链表) hash(哈希) set(集合) sorted set(有序集合)
Rdis可持久化(保存数据到硬盘中),为了保证数据安全。

二、业务场景

  • ①[Sort Set]排行榜应用,取top n操作,例如sina微博热门话题
  • ②[List]获得最新N个数据 或 某个分类的最新数据
  • ③[String]计数器应用
  • ④[Set]sns(social network site)获得共同好友
  • ⑤[Set]防攻击系统(ip判断)黑白名单等等

三、对比Memcached

Redis:

  1. 支持多种数据结构,不仅仅支持简单的k/v类型,同时还提供list,set,zset,hash等多种数据结构存储。
  2. 支持master-slave(主从模式应用)。
  3. 支持数据持久化,将内存中的数据存储到硬盘中,重启的时候可以再次加载使用。
  4. Redis单个value存储string的最大存储限制是512MB。
  5. Redis是单核,对应key-vlaue结构的简单数据存储,内存使用率低。使用hash结构数据存储,内存使用率会更高。
  6. Redis 的 key 长度最大为 2GB。
  7. 不能处理读取时的高流量,也不能处理繁重的写入。

Memcached:

  1. 不支持主从复制,也不支持数据持久化。
  2. Memcached是多核。对应hash结构的数据存储,内存使用率更低。
  3. Memcached单个value存储string的最大存储限制是1MB。
  4. Memcached 的 key 长度最多为 250 个字节。
  5. 适合处理高流量网站。它可以一次读取许多信息,并在很长的响应时间内返回。

四、数据结构类型

已知Redis有一下数据结构类型:String(key-value)、list、Hash、Set、Zset(sortedset)

1.String

string是redis最基本的类型,Redis的字符串是动态字符串,是可以修改的字符串。
Redis的string可以包含任何数据。包括jpg图片 base64或者序列化的对象
单个value值最大上限是512MB
如果只用string类型,redis就可以被看作加上持久化特性的memcached
image-1663746548356

2.List

key value(value1,value2,value3)
List的存储结构用的是双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素
这使得list既可以用作栈,也可以用作队列
同一端进出 先进后出 栈
一端 另外一端出 先进先出 队列
image-1663746609515
image-1663746696644

3.Set

Redis的set是String类型的无序集合,集合里面不包含重复元素。
set元素最大可以包含(2的32次方-1)个元素。
关于set集合类型除了基本的添加删除操作,其他常用的操作还包含集合的取 并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中的好友推荐功能。
image-1663746852296

4.Zset

和set一样sorted set也是string类型元素的集合,有序集合,元素不允许重复
不同的是每个元素都会关联一个权。
通过权值可以有序的获取集合中的元素,可以通过score值进行排序
image-1663746926099

5.Hash

Hash在实现结构上它使用二维结构,第一维是数组,第二维是链表,Hash的内容key和value存放在链表中,数组里存放的是链表的头指针。通过key查找元素时,先计算key的hashcode,然后用hashcode对数组的长度进行取模定位到链表的表头,再对链表进行遍历获取到相应的value值,链表的作用就是用来将产生了「hash碰撞」的元素串起来。
hash

五、数据持久化

Redis支持数据持久化(数据在服务或者软件重启之后不会丢失)
然后数据只存在与内存中,肯定会丢失,实现持久化,就是将数据存储到磁盘中(hdd或者ssd)

1.snappshoting(快照)

默认snappshoting是开启的,在配置文件里可以看到。
image-1663748323790

2.append noly file(aof)

image-1663748227208

总结:
snappshoting 一般的数据持久化使用,效率高,数据迁移方便
aof 适合于备份、数据实时性备份要求更高的情况

2
博主关闭了所有页面的评论