漫辰夕BLOG
🏠 首页 📚 归档 🗂️ 分类 🔗 友链
Redis详解(1):初步认识Redis
Linux相关 Redis

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

✍️ 漫辰夕 📅 2023/7/10 👁️ 4 次阅读

一、介绍

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

2.List

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

3.Set

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

image.png

4.Zset

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

image.png

5.Hash

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

image.png

五、数据持久化

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

1.snappshoting(快照)

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

image.png

2.append noly file(aof)

image.png


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

‹ 上一篇 GPU 压测神器 fieldiag 全解析——从显存到温度,15 分钟入门
下一篇 › Centos7 搭建Samba服务教程