[ 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 时间(毫秒)

相关推荐
m0_741585353 小时前
网站框架
数据库
编程充电站pro3 小时前
SQL 子查询与多表 JOIN 用法大全(速查版)
数据库·sql
祈祷苍天赐我java之术3 小时前
Redis 有序集合解析
java·前端·windows·redis·缓存·bootstrap·html
Dersun3 小时前
mysql数据库学习之常用函数(五)
数据库·sql·学习·mysql·ai编程
TDengine (老段)4 小时前
TDengine 时序函数 MAVG 用户手册
大数据·数据库·物联网·性能优化·时序数据库·iot·tdengine
hqwest4 小时前
QT肝8天16--加载动态菜单
开发语言·数据库·qt·ui·sqlite
数据知道5 小时前
Go基础:用Go语言操作MySQL详解
开发语言·数据库·后端·mysql·golang·go语言
krielwus6 小时前
Oracle 11g R2 物理冷备
数据库·oracle
Li zlun7 小时前
MySQL 管理与配置详解:从安装到架构解析
数据库·mysql·架构