Redis是什么

Redis

redis是什么?

Redis 是一个开源的,使用 C 语言编写的,支持网络交互的,内存中的 Key-Value 数据结构存储系统,支持多种语言,它可以用作数据库、缓存和消息 中间件

特点:

原子 -- Redis 的所有操作都是原子性的,同时 Redis 还支持对几个操作全 并后的原子性执行。

Redis 将数据存储在内存中,也支持数据的持久化,可以将内存中的数据保持 在磁盘中,重启的时候可以再次加载进行使用。

redis是一个高性能的,键值对的,将数据存储在内存中的非关系型数据库(nosql数据库 not noly sql)

高性能:数据存储在内存中,直接访问内存,Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s 。

键值对:新闻id(键):点赞数量(值)

​ 商品id:{id:1000,name:"华为手机",price:3000}

非关系型数据库:数据存储是键值对的,没有二维表关系 不适用sql操作

使用redis作为缓存,将一些访问量大,或者修改较少的数据使用redis存储起来,对mysql形成保护

为什么使用 redis?

随着 web3.0 的时代到来,传统的关系型数据库在大量的访问压力出现了一些 性能问题,如连接数量问题,IO瓶颈问题等,此时需要使用redis对部分数据进行缓 存,或者将某些数据直接存储在 redis 中,以减少对关系型数据库的访问压力. 当然 redis 数据库也是不能完全替代关系型数据库的,他们是相互依赖的

在Linux下使用Docker安装redis

1.创建 redis 配置文件和数据映射挂载

复制代码
mkdir -p /opt/redis/conf
mkdir -p /opt/redis/data

2.拉取镜像

复制代码
docker pull redis:6.0

3.安装

复制代码
docker run -d -p 6379:6379 \
--name redis \
--restart=always \
--privileged=true \
-v /opt/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /opt/redis/data:/data \
redis:6.0

4.进入redis

复制代码
redis-cli -h 127.0.0.1 -p 6479 -a *******(密码)

redis 数据结构

1.字符串String

string 是 redis 最基本的类型,一个 key 对应一个 value。 string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比 如 jpg 图片或者序列化的对象。 string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

1.1 单值缓存
复制代码
set key value
get key
del key
keys *
单值缓存值可以为 json 字符串
1.2 计数器
复制代码
set news_views:1 0 设置文章访问量
incr news_views:1 文章访问量+1
decr news_views:1 文章访问量-1
get news_views:1 获得
2.Hash(哈希)

redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合 用于存储对象. 存的是字符串和字符串值之间的映射,比如要存储用户购物车等信息.

hset key field value 存储一个哈希表 key 的键值

hget key field 获取哈希表 key 对应的 field 键值

hdel key field 删除哈希表 key 中的 field 键值

hlen key 返回哈希表 key 中的 field 的数量

hgetall key 返回哈希表 key 中所有的键值

3.List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列

表的头部(左边)或者尾部(右边)。

lpush key valuevalue... 将一个或多个值插入到 key 列表的表头(最左边)

rpush key valuevalue... 将一个或多个值插入到 key 列表的表尾(最右边)

lpop key 移除并返回 key 列表的头元素

rpop key 移除并返回 key 列表的尾元素

lrange key start stop 返回列表key中指定区间内的元素,区间以偏移量start

和 stop

常见用法

Stack= LPUSH + LPOP =FILO

Queue= LPUSH + RPOP

4.Set(集合)

Redis 的 Set 是无序集合。

sadd key membermember... 往集合 key 中存入元素,元素存在则忽略,

若 key 不存在则新建

srem key membermember... 从集合 key 中删除元素

smembers key 获取集合 key 中所有元素

scard key 获取集合 key 的元素个数

5.zset(sorted set:有序集合)

redis zset 也是不允许重复的成员,但是是有序的。

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为

集合中的成员进行从小到大的排序。

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

zadd key score member\[score member...] 往有序集合 key 中加入带分值元

zrem key membermember... 从有序集合 key 中删除元素

zscore key member 返回有序集合 key 中元素 member 的分值

zcard key 返回有序集合 key 中元素个

设置失效时间

有时候我们并不希望 redis 的 key 一直存在。例如缓存,验证码等数据,我们希 望它们能在一定时间内自动的被销毁。redis 提供了一些命令,能够让我们对 key 设置过期时间,并且让 key

设置值时直接设置有效时间

EX 表示以秒为单位

PX 表示以毫秒为单位 EX,PX 不区分大小写

set name jim EX 30 设置失效时间为 30 秒

ttl 键 查看剩余时间(秒)

pttl 键 查看剩余时间(毫秒)

设置值后设置有效时间

expire 键 时间(秒)

pexpire 键 时间(毫)

相关推荐
大模型码小白21 分钟前
告别造假数据,直接连数据库查真实时序数据喂给 TimechoAI 大模型
java·数据库·人工智能·microsoft·架构
晚安日记wanna25 分钟前
大表 DDL 面试翻车现场Online DDL 为什么还会锁死业务
数据库·面试·架构
IvorySQL27 分钟前
PostgreSQL 日报|建库策略致备库静默丢数据(9 月 12 日)
数据库·人工智能·postgresql
这个DBA有点耶27 分钟前
当Agent从“写SQL”变成“执行SQL”:数据库安全模型需要重新设计
数据库·aigc·dba
晚安日记wanna27 分钟前
MySQL 主从延迟别只答并行复制
数据库·面试·架构
qq_401700411 小时前
Qt QUrl 详解与代码示例
开发语言·数据库·qt
程序员阿鹏2 小时前
如何实现MySQL分库分表?
数据结构·数据库·sql·mysql·缓存
爱和冰阔落2 小时前
【Linux】条件变量为什么必须配合互斥锁:从 pthread_cond_wait 到阻塞队列
linux·运维·c++·缓存·中间件·安卓
风哥2号2 小时前
数据库教程FGMT33‑MySQL主从复制项目实施与维护06(MySQL8.4/9.7 MGR组复制)
数据库·mysql
liangsheng_g2 小时前
Spring事务传播行为分派与挂起恢复源码实战
数据库·sql·spring