[ Redis ] 数据结构储存系统

目录

[一. redis 概述](#一. redis 概述)

[1. 定义](#1. 定义)

[2. 特点](#2. 特点)

[3. 为什么使用 redis](#3. 为什么使用 redis)

[二. Redis 安装](#二. Redis 安装)

[三. redis](#三. redis)

[1. 5 种基本常用结构](#1. 5 种基本常用结构)

[2. String(字符串)](#2. String(字符串))

[(1). 单值缓存](#(1). 单值缓存)

[(2). 计数器](#(2). 计数器)

[(3). Hash(哈希)](#(3). Hash(哈希))

[(4). List(列表)](#(4). List(列表))

[3. Set(集合)](#3. Set(集合))

[4. zset(sorted set:有序集合)](#4. zset(sorted set:有序集合))

5.设置失效时间

(1)设置值时直接设置有效时间

[(2)设置key 值 后设置失效时间](#(2)设置key 值 后设置失效时间)


一. redis 概述

1. 定义

Redis 是一款内存中的 Key-Value 数据结构存储系统**, 开源, 支持网络交互和多种语言** ,主要作为数据库缓存和消息的中间件

2. 特点

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

读写效率高, Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s

 Redis提供多种数据结构 , 例如 list,set,zset,hash 等数据结构的存储

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

 Redis 分布式集群化扩展性极高,即 master-slave(主-从)模式。

3. 为什么使用 redis

随着 web3.0 的时代到来 , 传统的关系型数据库在大量的访问的压力下出现了一些性能问题 , 例如 连接数量问题(MySQL服务连接压力大) , IO瓶颈问题(从磁盘查询IO成本高)......

在项目中可以将一些 改变较少的数据 (例如 商品分类信息) 以及访问量很大的数据 (例如 抢购 秒杀 买票), 临时存储在Redis中, 减少MySQL的访问压力 .还可以存储例如点赞 收藏的数量等数据

Redis一般称为非关系型数据库 ,对部分数据进行缓存, 减少对关系型数据库的访问压力 . 或者将某些数据直接存储在 redis 中. redis也可以称为nosql数据库(not only sql)

当然 redis 数据库也是不能完全替代关系型数据库的,他们是相互依赖的.

web1.0 2000年 静态网页 例如 hao123 ,物流信息网

web2.0 动态网页 后台新增数据----->数据库 由平台发布数据

web3.0 抖音 头条 用户也可以发布数据

二. Redis 安装

安装redis服务

安装redis客户端

三. redis

1. 5 种基本常用结构

string(字符串)

hash(哈希)

list(列表)

set(集合 )

zset(sorted set:有序集合)

2. String(字符串)

string 是 redis 最基本的类型,一个 key 对应一个 value。

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

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储512MB

(1). 单值缓存

set key value

get key

del key

keys *

单值缓存值可以为 json 字符串

(2). 计数器

set news_views:1 0 设置文章访问量

incr news_views:1 文章访问量+1

decr news_views:1 文章访问量-1

get news_views:1 获得值

(3). 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 中所有属性值

hincrby key field 1 增1

hincrby key field -1 减1

(4). 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

3. Set(集合)

Redis 的 Set 是无序集合,不能存储重复元素

sadd key valuevalue... 往集合 key 中存入元素,元素存在则忽略,若 key 不存在则新建

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

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

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

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

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

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序 . zset 的成员是唯一的,但分数(score)却可以重复。

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

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

zscore key value 返回有序集合 key 中元素 value的分数

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

5.设置失效时间

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

(1)设置值时直接设置有效时间

set key value EX 表示以秒为单位

set key value px 表示以毫秒为单位

ttl key 查看剩余时间(秒)

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

EX,PX 不区分大小写

举例: set name jim EX 30 设置key的自动失效时间为 30 秒

(2)设置 key 值 后设置失效时间

expire key 时间(秒)

pexpire key 时间(毫秒)

相关推荐
2603_954708314 小时前
全维度容错设计,打造微电网安全运行屏障
服务器·网络·数据库·人工智能·分布式·安全
IvorySQL4 小时前
从双解析器到循环工程:IvorySQL 五年技术演进路线的深度观察
大数据·数据库·人工智能·postgresql·开源
wefg14 小时前
【MySQL】事务
数据库·mysql
黑白极客5 小时前
mysql的高可用性
数据库·mysql
一十九的酒5 小时前
Oracle 12c 标准版无缝升级企业版实战记录
数据库·oracle·标准版切换到企业版
ZhengEnCi5 小时前
S02-SpringBoot实体类新增字段对已有数据的影响及自动DDL同步机制详解
数据库·spring boot
妙码生花5 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(三十二):增加 admin_rule 模型及数据表迁移
数据库·go·ai编程
千维百策6667 小时前
SRE 中如何消除琐务:提升工程效率与服务可靠性的实践方法
数据库
卓怡学长7 小时前
w266基于spring boot + vue 圣地延安美食乐享系统
java·数据库·vue.js·spring boot·spring·intellij-idea
名不经传的养虾人7 小时前
从0到1:企业级AI项目迭代日记 Vol.65|最危险的故障不是崩溃,是悄悄换掉了正确答案
数据库·人工智能·ai编程·ai-agent·企业ai