🌩️【缓存】Redis使用及数据类型
2022-11-11
| 2024-3-24
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password
Sub-item
Last edited time
Mar 24, 2024 02:02 AM
Parent item
领域

redis 客户端使用

redis是什么?

redis是基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 redis是一个key-value存储系统。它支持存储的value类型:
  • string(字符串)
  • list(链表)
  • set(集合)
  • zset(sorted set 有序集合)
  • hash(哈希类型)
这些数据类型都支持push/pop、add/remove取交集并集和差集及更丰富的操作,而且这些操作都是原子性的,与memcached一样,数据都是缓存在内存中。 redis会周期性的把更新的数据写入磁盘(rdb)或者把修改操作写入追加的记录文件(aof),并且在此基础上实现了master-slave(主从)同步。

redis优势

  • 速度快 因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)。
  • 类型多 Redis不仅仅只⽀持简单的K-V形式的数据存储,支持string,list,set,sorted set,hash等集合类数据的存储。
  • 支持事务,操作都是原子性 所谓的原子性就是对数据的更改要么全部执行,要么全部不执行。
  • 丰富的特性 可用于缓存,消息,按key设置过期时间,过期后将会自动删除。
  • Redis⽀持实时的数据备份,及时宕机,也可以把数据恢复过来。
  • Redis⽀持数据的持久化,可以存放在内存memory中的数据直接保存在磁盘上。

Redis常⽤的数据类型

edis是键值对的数据库,常用有如下几种数据类型:String、Hash、Set、List、SortedSet、pub/sub、Transactions。
  1. String:Strings就是⼀个最最简单的Key-Value形式存储的变量。其中Value既可以是数字也可以是字符串。其实现⽅式是在Redis内部默认存储⼀个字符串,被redisObject引⽤,当检测到数字操作如⾃增⾃减incr、decr等等命令时,⾃动转化为数字进⾏计算,计算完毕后再转化为String存储起来。
  1. Hash: Hash存储是键值对的value。即Key-Hash,⽽Hash⼜是⼀个k-v的结构,如果使⽤的Memcached,则需要把整个Hash打包存储在内存中,如果需要查询其中某个值,还要全部取出整个Hash,再查找对应值。⽽Redis可以直接通过命令获取到Value,⼤⼤提⾼了性能。 其实现原理:当成员较少时,Redis为了节约内存会采⽤类似⼀维数组的紧凑存储,⽽当对象较多时,则直接转为HashMap存储。
  1. Set:Set是⼀个⽆序的天然去重的集合,即Key-Set。此外还提供了交集、并集等⼀系列直接操作集合的⽅法,对于求共同好友、共同关注什么的功能实现特别⽅便。其底层是靠HashMap实现的,其中value为null;
  1. List:List是⼀个有序可重复的集合,其遵循FIFO的原则,底层是依赖双向链表实现的,因此⽀持正向、反向双重查找。通过List,我们可以很⽅⾯的获得类似于最新回复这类的功能实现。
  1. SortedSet:类似于java中的TreeSet,是Set的可排序版。此外还⽀持优先级排序,维护了⼀个score的参数来实现。其底层主要依赖HashMap来实现的,通过维持插⼊的数值和Score优先级的映射来进⾏排序。
  1. pub/sub:发布订阅,类似于消息队列mq。可以选择对某个Key进⾏订阅,⼀旦这个key发布了⼀些消息,则所有订阅了这个Key的对象就可以收到这个消息。主要可以⽤在实时消息系统上,例如聊天之类的。
  1. Transactions:NoSQL不⽀持事务,但是通过提供了打包执⾏的功能,即这个包⾥⾯的所有命令必须要⼀起执⾏,此外还可以锁定某个Key,在打包执⾏命令时如果检测到这个Key发⽣了变化,则直接回滚。
 
 
 
计算机基础
  • 高性能
  • Web服务
  • 缓存技术
  • 【读书笔记】《Go With The Domain》6. Repository存储库模式开源软件的学习方法
    目录