[ 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 value[value...] 在key 列表 从头(左) 插入一个或多个值

rpush key value[value...] 在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 value[value...] 往集合 key 中存入元素,元素存在则忽略,若 key 不存在则新建

srem key value[value...] 从集合 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 value[value...] 从有序集合 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 时间(毫秒)

相关推荐
Apple_羊先森18 小时前
ORACLE数据库巡检SQL脚本--19、磁盘读次数最高的前5条SQL语句
数据库·sql·oracle
全栈前端老曹19 小时前
【MongoDB】Node.js 集成 —— Mongoose ORM、Schema 设计、Model 操作
前端·javascript·数据库·mongodb·node.js·nosql·全栈
神梦流19 小时前
ops-math 算子库的扩展能力:高精度与复数运算的硬件映射策略
服务器·数据库
让学习成为一种生活方式19 小时前
trf v4.09.1 安装与使用--生信工具42-version2
数据库
啦啦啦_999920 小时前
Redis-5-doFormatAsync()方法
数据库·redis·c#
生产队队长20 小时前
Redis:Windows环境安装Redis,并将 Redis 进程注册为服务
数据库·redis·缓存
老邓计算机毕设20 小时前
SSM找学互助系统52568(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·javaweb 毕业设计
痴儿哈哈20 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
Σίσυφος190020 小时前
PCL法向量估计 之 方向约束法向量(Orientation Guided Normal)
数据库
老毛肚20 小时前
手写mybatis
java·数据库·mybatis