《Redis 入门指南:快速掌握高性能缓存技术》

目录

一、准备工作

二、操作数据库

2.1 切换数据库

2.2 存储和查看数据

一、存储语法

二、一次性存储多个键值对

三、追加值

四、查看值的类型

五、查询值

六、一次查询多个值

 七、查看当下数据库所有的键

八、删除键

九、查看 键 是否存在

十、重命名键

2.3 过期时间管理

2.4 列表(Lists)

2.5 集合(Set)

2.6 有序集合(Sorted Set)

2.7 哈希(Hash)

三、公共操作

四、redis与python交互 


一、准备工作

安装redis非常简单,只需要下载压缩文件解压即可

链接:redis-latest.rar官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘

提取码:1024

下载完成后按照以下步骤开启服务

第一步:先找到解压的文件,可以选择在该文件夹内的导航栏输入cmd回车或者直接双击redis-server二选一打开终端

第二步:在终端输入 redis-server 开启服务

注意:这个窗口不能关闭

第三步:重开一个终端输入 redis-cli  【在导航栏输入的cmd打开的终端】

然后就可以在这里操作 redis数据库了 


二、操作数据库

redis支持16个数据库(自带,不可减少或增加),编号从0到15,默认进入0号数据库,redis是以键值对存储的,与MySQL不同,没有表格概念,区分大小写

2.1 切换数据库

select 数据库编号  # 进入指定数据库

例如:进入 2 号数据库

select 1


2.2 存储和查看数据

 一、存储语法

设置键值对:set 键 值

set s1 lysir
set s2 零一先生

注意:存储中文字符时,需在进入 Redis 时使用 redis-cli --raw,否则显示乱码,但存储是成功的。

 二、一次性存储多个键值对

语法:mset 键1 值1 键2 值2 ...

mset s3 AA s4 BB s5 CC

三、追加值

语法:append 键 追加的值

append s3 aa  # 结果变为 AAaa

四、查看值的类型

语法:type 键

type s1

五、查询值

语法:get 键

get s1

六、一次查询多个值

语法:mget 键1 键2 ...

mget s1 s3 s5

 七、查看当下数据库所有的键

语法:keys *

八、删除键

语法:del 键1 键2 ...

del s1 s3

九、查看 键 是否存在

语法:exists 键

返回值:存在返回 1,不存在返回 0

exists s2

十、重命名键

语法:rename 旧键 新键

rename s2 new_s1


2.3 过期时间管理

当键超过设定的时间之后就会自动失效删除

  • 设置键的过期时间
    expire 键 时间(秒)

  • 查看键的剩余生存时间
    ttl 键
    返回值:

    • -2:键已过期

    • -1:键不存在或未设置过期时间

  • 取消键的过期时间
    persist 键


2.4 列表(Lists)

  • 特点:有序、可重复、动态(可在两端添加)。

  • 1、从左边插入数据
    lpush 列表键 值1 值2 ... 值

示例:

lpush L1 A B C D lysir

  • 2、从右边插入数据
    rpush 列表键 值1 值2 ... 值N

示例:

rpush R1 E F G H lysir

3、查看列表内容
lrange 列表键 开始位置 结束位置

lrange L1 0 -1  # -1 表示到末尾

  • 从左边删除一个元素
    lpop 列表键

  • 从右边删除一个元素
    rpop 列表键

  • 删除整个列表
    del 列表键

4、获取指定索引的元素
lindex 列表键 索引

lindex R1 3

5、修改指定索引的元素值
lset 列表键 下标 值

lset L1 3 china


2.5 集合(Set)

  • 特点:无序、唯一、动态。

1、添加元素到集合
sadd 集合键 值1 值2 ... 值N
示例:

sadd set1 v1 v2 v3 v4 v5

2、查看集合中所有成员
smembers 集合键

smembers set1

3、检查元素是否在集合中
sismember 集合键 值
返回值:存在返回 1,不存在返回 0

sismember set1 v6

4、删除集合中的元素
srem 集合键 值1 值2 ...

srem set1 v1 v2 v5


2.6 有序集合(Sorted Set)

  • 特点:有序(有下标)、唯一、每个元素关联一个分数(用于排序),动态。

1、添加元素到有序集合
zadd 键 分数1 值1 分数2 值2 ... 分数N 值N

zadd sset1 80 A 90 B 100 C 98 D 88 E

2、获取有序集合的元素
zrange 键 起始下标 结束下标

zrange sset1 0 -1  # -1 表示到末尾

3、获取有序集合的分数
zscore 键 值

zscore sset1 A

  • 4、获取有序集合的元素及分数

    • 正序查看:
      zrange 键 起始下标 结束下标 withscores

    • zrange sset1 0 -1 withscores
    • 倒序查看:
      zrevrange 键 起始下标 结束下标 withscores

    • zrevrange sset1 0 -1 withscores

  • 5、根据分数筛选查询
    zrangebyscore 键 最小分数 最大分数

zrangebyscore sset1 80 90

6、修改指定成员的分数
zincrby 键 要修改的分数(正数是加 负数是减)  值

zincrby sset1 200 B
zincrby sset1 -50 C

7、删除有序集合中的元素
zrem 键 值1 值2 ... 值N

zrem sset1 A C D


 2.7 哈希(Hash)

  • 特点:键值对存储(一个键对应多个值),无序、动态。

1、单个设置

语法:hset 哈希键 字段 值 

2、多个设置

hmset 哈希键 字段1 值1 字段2 值2 ...

hmset HXuser name zhou age 18 msg xxx

 3、获取哈希表的值

  • 获取单个值:
    hget 哈希键 字段

  • 获取多个值:
    hmget 哈希键 字段1 字段2 ...

hmget HXuser name age msg

4、获取哈希表所有 字段 及 值

  • 获取所有值:
    hvals 哈希键

  • 获取所有字段:
    hkeys 哈希键

  • 获取所有键值:
    hgetall 哈希键

hgetall HXuser

5、检查哈希表中是否存 在 某个字段

hexists 哈希键 字段
返回值:存在返回 1,不存在返回 0

hexists HXuser china

7、删除哈希表 字段

hdel 哈希键 字段1 字段2 ...
返回值:实际删除的字段数量。

hdel HXuser age msg


三、公共操作

  • 查看所有键
    keys *

  • 清空当前数据库
    flushdb

  • 清空所有数据库
    flushall
    注意:此操作不可逆,会清空所有 16 个数据库的数据。

特别注意

  • Redis 数据默认存储在内存中,服务关闭后数据会丢失。若需持久化存储,请查阅相关文档。


四、redis与python交互 

redis并不是内置模块,所以需要先下载 redis 模块

安装Redis库: 

pip install redis -i https://mirrors.aliyun.com/pypi/simple/

下面是python与redis交互演示代码

# 1 导包
import redis
# 2建立连接
db_con = {'host':'127.0.0.1',  #主机'port':6379, # 端口'db':0   #连接哪个数据库
}
# 3连接Ridis服务器(会返回一个连接对象)
r = redis.Redis(**db_con)
print(r)# 4对数据库进行操作
# 设置键值对=> r.set('key1','value1')
#a.新增
r.set('name','tonny')
#b.查询(获取)
name = r.get('name')
print(name)#其他操作也都可以通过 r.出来(点出来)# 5最后记得关闭连接
r.close()

温馨提示:

1,必须确保 redis 服务器正常开启了,否则会连接失败

2,redis 端口号可以在开启服务器的界面查看

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/72311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨部门沟通与团队协作

【跨部门协作:破局之道在冰山之下】 感谢太原市组织部信任,上海财经大学邀约 今日为财务精英拆解《跨部门沟通与团队协作》迷局。从本位思维到共同愿景,用因果回路图透视冲突本质,当财务人开始用"延迟反馈"视角看预算博…

【零基础到精通Java合集】第一集:Java开发环境搭建

以下是针对**“Java开发环境搭建”**的15分钟课程内容设计,包含知识点拆分、实操演示与互动练习: 课程标题:Java开发环境搭建(15分钟) 目标:完成JDK安装、IDE配置并运行第一个Java程序 一、课程内容与时间分配 0-2分钟 课程目标与前置准备 明确学习目标:JDK安装、环境…

【JavaEE】wait 、notify和单例模式

【JavaEE】wait 、notify 和单例模式 一、引言一、wait()方法二、notify()方法三、notifyAll()方法四、wait()和sleep()对比五、单例模式5.1 饿汉模式5.2 懒汉模式5.2 懒汉模式-线程安全(改进) 博客结尾有此…

http报文的content-type参数和spring mvc传参问题

很早之前博主聊过HTTP的报文结构以及其中和传参相关的重要参数content-type还有spring mvc,以前的三篇文章: HTTP与HTTPS协议详解:基础与安全机制-CSDN博客 详解Http的Content-Type_content-type application-CSDN博客 如何在Spring Boot中…

‘ts-node‘ 不是内部或外部命令,也不是可运行的程序

新建一个test.ts文件 let message: string = Hello World; console.log(message);如果没有任何配置的前提下,会报错’ts-node’ 不是内部或外部命令,也不是可运行的程序。 此时需要安装一下ts-node。 npm install

《白帽子讲 Web 安全:点击劫持》

目录 摘要: 一、点击劫持概述 二、点击劫持的实现示例:诱导用户收藏指定淘宝商品 案例 构建恶意页面: 设置绝对定位和z - index: 控制透明度: 三、其他相关攻击技术 3.1图片覆盖攻击与 XSIO 3.2拖拽劫持与数据…

基于机器学习的图像分类综述

图像分类是计算机视觉和模式识别领域的核心任务之一,其目标是从输入的图像中自动识别并标注其所属的类别标签。基于机器学习的图像分类技术近年来取得了显著进展,尤其是在深度学习的推动下,性能得到了质的提升,并在多个实际应用中表现出色。 以下是对基于机器学习的图像分…

SQL Server 中行转列

在 SQL Server 数据库中,行转列在实践中是一种非常有用,可以将原本以行形式存储的数据转换为列的形式,以便更好地进行数据分析和报表展示。本文将深入浅出地介绍 SQL Server 中的行转列技术,并以数据表中的时间数据为例进行详细讲…

系统架构设计师—计算机基础篇—系统性能评价

文章目录 性能评价指标主频CPU时钟周期机器周期CPIMIPS 系统性能调整阿姆达尔解决方案性能优化数据库应用系统Web应用系统 性能评估方法评价程序真实程序基准测试程序核心程序小型基准程序合成基准程序 基准测试程序组 评测准确度 性能指标计算机数据库应用系统Web应用系统 性能…

web3.0简介

Web3.0(或简称 Web3)是近年来广泛讨论的一个新型互联网概念,其核心思想在于利用区块链及相关分布式技术,打造一个更加开放、去中心化、透明且以用户为主导的网络生态系统。这意味着在 Web3.0 时代,用户不再只是信息的消…

python第十一课:并发编程 | 多任务交响乐团

🎯 本节目标 理解多线程/多进程/协程的应用场景掌握threading与multiprocessing核心用法学会使用asyncio进行异步编程开发实战项目:高并发爬虫引擎破解GIL锁的性能迷思 1️⃣ 并发编程三剑客 🎻 生活化比喻: 多线程 → 餐厅多个…

微服务架构实践:SpringCloud与Docker容器化部署

## 微服务架构实践:SpringCloud与Docker容器化部署 随着互联网应用的复杂性不断增加,传统的单体应用架构面临着诸多挑战,如难以部署、维护困难、开发效率低下等问题凸显出来。为了解决这些问题,微服务架构应运而生,它通…

SpringBoot实战(三十二)集成 ofdrw,实现 PDF 和 OFD 的转换、SM2 签署OFD

目录 一、OFD 简介 1.1 什么是 OFD?1.2 什么是 版式文档?1.3 为什么要用 OFD 而不是PDF? 二、ofdrw 简介 2.1 定义2.2 Maven 依赖2.3 ofdrw 的 13 个模块 三、PDF/文本/图片 转 OFD(ofdrw-conterver) 3.1 介绍&#xf…

随机树算法 自动驾驶汽车的路径规划 静态障碍物(Matlab)

随着自动驾驶技术的蓬勃发展,安全、高效的路径规划成为核心挑战之一。快速探索随机树(RRT)算法作为一种强大的路径搜索策略,为自动驾驶汽车在复杂环境下绕过静态障碍物规划合理路径提供了有效解决方案。 RRT 算法基于随机采样思想…

Vscode通过Roo Cline接入Deepseek

文章目录 背景第一步、安装插件第二步、申请API key第三步、Vscode中配置第四步、Deepseek对话 背景 在前期介绍【IDEA通过Contince接入Deepseek】步骤和流程,那如何在vscode编译器中使用deepseek,记录下来,方便备查。 第一步、安装插件 在…

C++ 二叉树代码

二叉树代码&#xff0c;见下 #include <iostream> using namespace std;template<typename T> struct TreeNode{T val;TreeNode *left;TreeNode *right;TreeNode():val(0), left(NULL), right(NULL)TreeNode(T x):val(x), left(NULL), right(NULL){} };template&l…

leetcode第17题求电话号码组合

原题出于leetcode第17题https://leetcode.cn/problems/letter-combinations-of-a-phone-number/description/题目如下&#xff1a; 题目稍微有点复杂&#xff0c;初看会感觉特别复杂&#xff0c;首先我们需要理清思路&#xff1a; 最后的结果是字母组合&#xff0c;因此遍历的是…

Deepseek对ChatGPT的冲击?

从测试工程师的视角来看&#xff0c;DeepSeek对ChatGPT的冲击主要体现在**测试场景的垂直化需求与通用模型局限性之间的博弈**。以下从技术适配性、效率优化、风险控制及未来趋势四个维度展开分析&#xff1a; --- ### **一、技术适配性&#xff1a;垂直领域能力决定工具选择…

三十五周学习周报

目录 摘要abstract文献阅读1.1相关知识1.1.1 PSO1.1.2 BI-LSTM1.1.3 BI-GRU 1.2 整体框架1.3 实验分析 总结 摘要 在本周阅读的文献中&#xff0c;作者提出了一种创新的水文时间序列预测模型&#xff0c;其通过将粒子群优化&#xff08;PSO&#xff09;与Bi-LSTM和Bi-GRU相结合…

Git:多人协作

目录 多人协作一 准备工作 开发者1准备工作 开发者2准备工作 协作开发 将内容合并进master 多人协作二 开发者1进行工作 开发者2进行工作 特殊场景 将内容合并进master 之前所学习的Git操作&#xff0c;是为了多人协作开发做铺垫的&#xff0c;因为在公司中&#xf…