Redis基础

Redis是一款内存中的数据缓存系统,支持多种数据类型如String、Hash、List、Set和ZSet。作为NoSQL数据库,它提供了高效的数据操作,并且可以设置失效时间。Redis在内存中存储键值对,通过全局hash表实现快速访问,避免hash冲突。它与关系型数据库相辅相成,广泛应用于数据缓存场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis主要是用来做数据缓存的,Redis运行在内存中,数据也保存在内存中

缓存———让数据离程序更近

一般把Redis叫做中间件

NOSQL

Not only SQL(不仅仅是SQL),泛指非关系型的数据库

关系型数据库:使用标准的SQl语言进行操作

非关系型数据库:没有固定的关系,以键值对的形式存储

key—value menuLIst:[{},{},{}] key:hash

不是相互替代的,是相辅相成的

Redis

是键值对存储在内存中,也可以存储在硬盘上

存储结构简单,性能高,易于扩展,支持多语言,保证操作原子性

支持多种数据类型

关系型数据库

不能代替,基本的数据还是存储在关系型数据库中

优点:易于维护,使用方便,通用的SQL语言

缺点:IO瓶颈

非关系型数据库

优点:结构简单易扩展,高性能,灵活的数据模型

缺点:只适合存放简单数据,不适合放时间太久,不适合存放海量数据

Redis数据类型

Redis有五种数据类型:String(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)

底层数据结构一共有6种:

简单动态字符串,双向链表,压缩链表,哈希表,跳表,整数数组

全局hash表

hash可以在O(1)的时间内计算出hash值并且找到对应的entry位置,entry里面也是一个个key指针和value指针

问:如何避免hash冲突?

答:可以通过链式哈希解决冲突,也就是将一个桶里面的元素使用链表保存。但是当链表过长就会产生查找性能表差。Redis为了追求快,使用两个全局哈希表。用于rehash操作,增加现有的哈希桶数量,减少哈希冲突 

 String

String是Redis最基本类型,一个key对应一个value。

String是二进制安全的。意思是String可以包含任何数据。例如jpg图片或者序列化对象

String最大可以存储512MB

hash

Redis hash是一个String类型的field和value映射表,hash特别适合用于存储对象(对对象中的数据发生修改情况)

存的是字符串和字符串中的映射,比如要存储用户购物车等信息

List 

Redis是简单的字符串链表,按照插入顺序排序,可以添加一个元素到链表的头部和尾部。

适用场合:可以存储接收到的信息数据

Set

Redis是Set的无序集合

ZSet

ZSet也是不可以重复的集合,但是是有序的。

不同的是每个元素都关联了一个double类型的分数。Redis正是通过分数来为元素排序的。

ZSet成员是唯一的,但是分数(score)可以重复

 设置失效时间

有时候我们不希望Redis的key一直存在,就类似于验证码,缓存等数据,我们希望它们能在一定的时间内自动被销毁。Redis提供了一些命令,给key设置过期时间,时间到了自动销毁。

设置值时直接设置有效时间
 
EX 表示以秒为单位
PX 表示以毫秒为单位
EX,PX 不区分大小写 set name jim EX 30 设置失效时间为 30 秒
ttl 键 查看剩余时间(秒)
pttl 键 查看剩余时间(毫秒)
设置值后设置有效时间
expire 键 时间(秒)
pexpire 键 时间(毫秒)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值