Redis基础【完整版】:简介和常用命令、全面key操作、五种数据类型的增删改查、Redis与Python交互(附源代码)

2023-11-11

目录

一、Redis简介和常用命令

1、Reids简介

2、redis常用命令

进入redis

查看数据库版本

切换数据库

退出redis

二、全面key操作

1、查看当前数据有哪些键

 2、创建数据

 3、获取数据

4、获取数据如果显示是十六进制,那么重新进入redis

5、查看key是否存在

6、查看名称中包含a的key 

7、查看key的值的类型

8、设置键的过期时间和查看过期时间

三、五种数据类型的增删改查 

1、string — 字符串

创建一个字符串

添加数据

删除数据

设置多个键值

获取多个值

删除多个键

2、list—列表

创建列表和添加数据

查看数据

查看某个数据

插入多条数据

删除数据

3、hash类型—哈希 

创建hash类型

查看所有hash类型中的值

查看hash类型中的单个值 

查询所有的值

查询所有的键

4、set—集合 

创建集合和添加数据

查看集合中的数据

删除数据 

指定删除 

5、zset—有序集合 

创建有序集合和添加数据

查看数据 (查看成员)

 通过分值去查看成员

四、redis与python交互

2、代码演示

1、附源代码


一、Redis简介和常用命令

1、Reids简介

  • redis:非关系型数据库
  • 使用键值对存储数据
  • 存储的时候是单条数据,并且数据之间没有联系。

2、redis常用命令

  • redis命令可参考以下文档

Redis 命令参考 — Redis 命令参考http://doc.redisfans.com/

  • 进入redis

命令:redis-cli

  • 查看数据库版本

命令:redis-cli -v

 

  • 切换数据库

  • redis的数据库默认有16个,通过0~15来标识,默认值选择第一个数据库

例(切换到第三个数据库):select 2         

  • select 后面是下标,注意命令结尾不加分号

 

  • 退出redis

命令:exit

 



二、全面key操作

1、查看当前数据有哪些键

命令:keys *

 

 2、创建数据

命令:set 键名 值

 3、获取数据

命令:get 键名

4、获取数据如果显示是十六进制,那么重新进入redis

命令:redis-cli --raw

  • 例如:创建一个a2键,并向里面写入中文数据“大海”,并读取数据,发现数据被写为了十六进制

  • 先退出redis,输入exit后回车

  • 然后再次进入数据,输入命令:redis-cli --raw

 

  • 接着进入第三个数据库,重新查看a2的值 ,这时我们才能读取到中文数据

 

5、查看key是否存在

  • 存在返回1,不存在返回0

命令:exists key

 

6、查看名称中包含a的key 

命令:keys a*

7、查看key的值的类型

 命令:type 键名

8、设置键的过期时间和查看过期时间

设置键的过期时间的命令:expire 键名 seconds (以秒为单位)

查看过期时间的命令:ttl 键名 (没有数据就返回 -2)

  •  设置键的过期时间后,当了过期时间,该键自动会被系统删除



三、五种数据类型的增删改查 

1、string — 字符串

  • 创建一个字符串

命令:set 键名 值

  • 添加数据

命令:append 键名 值          (在已有的数据后追加数据,返回值表示键中有的字符个数)

  • 删除数据

命令:del 键名

 

  • 设置多个键值

命令:meset 键1 值1 键2 值2 键3 值3……

  • 获取多个值

命令:mget  键1 键2 键3……

  • 删除多个键

命令:del 键1 键2 键3……

2、list—列表

  • 创建列表和添加数据

  • 执行添加数据的操作时会自动创建列表

左侧添加命令:lpush 键名 值        (lpush表示从左侧添加数据)

右侧添加命令:rpush 键名 值        (rpush表示从右侧添加数据)

 

p1键相当于:p1 = ['hallo']

  • 查看数据

命令:lrange  键名  开始下标  结束下标        (从左边开始读取数据)

  • 查看某个数据

命令:lindex 键名 下标

 

  • 插入多条数据

命令:lpush 键名 值1 值2 值3 ……

注意:rpush的插入多条数据的形式和lpush相同

 

  • 插入多个数据过程解析:rpush p1 1 2 3 4,从右侧将数据插入

  • 删除数据

 从后面开始删除(右边):rpop 键名

 从前面开始删除(左边):lpop 键名

删除后返回的是删除的数据

 

3、hash类型—哈希 

  • 创建hash类型

例:hset h1 a 1

(这是键值对的嵌套:h1是键名,a是h1的值,而a是1的键名,1是a的值)

 

  • 查看所有hash类型中的值

例:hgetall h1

 

  • 查看hash类型中的单个值 

例:hset h1 a

  • 查询所有的值

例:hvals h1

 注意:对于h1的内部来说,a是键,不是值

  • 查询所有的键

例:hkeys h1

 

4、set—集合 

集合的特点:无序,元素唯一,不重复。

  • 创建集合和添加数据

  • 添加数据时就会自动创建集合

命令:sadd 键名 值

  • 查看集合中的数据

命令:smembers 键名

 

  • 删除数据 

命令:spop 键名         (随即删除,返回的是删除的值)

 

  • 指定删除 

命令:srem 键名 值1 值2 ……  (可删除一个或多个,返回的结果是删除的个数)

  • 先向集合中写入几个数据

  • 指定删除数据 

 

5、zset—有序集合 

有序集合的简单理解:每位成员(member)都会有一个分数,与关联成员是唯一的,分数是可以重复的。

  • 创建有序集合和添加数据

  • 添加数据时就会自动创建有序集合

例:zadd 键名 10 zs    (10是分数,zs是成员) 

 

  • 查看数据 (查看成员)

  • 先向有序集合中写入两个数据

查看数据:zrange z1  0 10 (0是开始下标,10是结束下标)

  •  通过分值去查看成员

例:zrangebyscore z1 1 20

(1是分数的最小值,20是分数的最大值,即查找分数在[1,20]的成员)



四、redis与python交互

在python中需要下载的模块:pip install redis

2、代码演示

例:在python中实现在redis的第二个数据库,创建一个表

  • 先查看第二个数据库中的表

  •  利用python在redis中创建一个键

  •  最后在redis中查看

1、附源代码

import redis

#连接redis数据库
#写入的KV对中V为string类型,不加则写入的为字节类型,设置decod_response=True 表示写入的类型是str
pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=1, decode_response=True)
st = redis.Redis(connection_pool=pool)

# 创建一个键
st.set('python', 'So nice') # python是键名,So nice是值
print(st.get('python')) # 获取python键中的值

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis基础【完整版】:简介和常用命令、全面key操作、五种数据类型的增删改查、Redis与Python交互(附源代码) 的相关文章

  • 如何统计 Redis 流中未读或已确认的消息?

    使用 Redis 5 0 3 假设我们创建一个名为streamy和一个消费群体consumers XGROUP CREATE streamy consumers MKSTREAM 然后向其中添加一些消息 XADD streamy messa
  • Redis hash写入速度非常慢

    我面临一个非常奇怪的问题 使用 Redis 时 我的写入速度非常糟糕 在理想的情况下 写入速度应该接近 RAM 上的写入速度 这是我的基准 package redisbenchmark import redis clients jedis
  • 从redis中检索大数据集

    一台服务器上的应用程序查询另一台服务器上运行的 Redis 查询的结果数据集约为 250kzrangebyscore objects locations inf inf这在应用程序服务器上似乎需要 40 秒 当使用命令执行时redis cl
  • Neo4j 入门

    我对 neo4j 完全陌生 很抱歉问这样一个基本问题 我已经安装了 neo4j 我正在使用 shell localhost 7474 webadmin console 我正在寻找一个很好的示例 它使用一些 shell 命令从预先存在的图形数
  • 如何批量删除Redis中数十万个带有特殊字符的key

    我们有一个包含数十万个 Redis 键的列表 其中包含各种特殊字符 我们希望批量删除它们 对于这个问题上的类似问题 有一些很好的答案 如何使用 Redis 自动删除与模式匹配的键 https stackoverflow com questi
  • redis 阻塞直到 key 存在

    我是 Redis 新手 想知道是否有办法能够await get通过它的键来获取值 直到该键存在 最小代码 async def handler data await self fetch key async def fetch key ret
  • 通过 StackExchange.Redis 连接到 Redis Servier

    我尝试使用以下方法制作一个测试项目Redis https redis io服务器 通过 Virtual Box 安装在 Linux Ubuntu 虚拟机上 Linux 机器通过 Virtual Box 的桥接适配器与本地网络连接 Virtu
  • 在 aws-elasticache 上使用 memcached 或 Redis

    我正在 AWS 上开发一个应用程序 并使用 AWS elasticache 进行缓存 我对使用 memcached 或 redis 感到困惑 我阅读了有关 redis 3 0 2 更新以及它现在如何等同于 memchached 的文章 ht
  • 在 Kubernetes/Openshift 中将客户端-服务器流量保持在同一区域的最佳方法?

    我们运行兼容 Kubernetes OKD 3 11 的本地 私有云集群 其中后端应用程序与用作缓存和 K V 存储的低延迟 Redis 数据库进行通信 新的架构设计将在两个地理上分布的数据中心 区域 之间平均划分工作节点 我们可以假设节点
  • 如何将node.js管道传输到redis?

    我有很多数据要插入 SET INCR 到redis DB 所以我正在寻找pipeline http redis io topics pipelining 质量插入 http redis io topics mass insert通过node
  • SignalR 无法连接到 SSL 上的 Azure Redis

    我目前在 Azure 上托管我的 redis 缓存服务器 并让 signalR 依赖它作为骨干 使用以下内容 GlobalHost DependencyResolver UseRedis 服务器 端口 密码 eventKey 这可以在端口
  • socket.io 广播功能 & Redis pub/sub 架构

    如果有人能帮助我解决一个小疑问 我将不胜感激 使用socket io广播功能和在Redis上使用pub sub设计架构有什么区别 例如 在另一个示例中 node js 服务器正在侦听 socket io 针对 键 模型 todo 和值 数据
  • 在不知道对象键的情况下进行 Cosmos DB 查询

    单个文档示例 id xxxxxx properties a prop type names value John b prop type score value 5 5 c prop type names value Steve 问题 如何
  • Node Js:Redis 作业在完成其任务后未完成

    希望你们做得很好 我在我的 Nodejs 项目中实现了 BullMQ Bull 的下一个主要版本 来安排发送电子邮件的作业 例如 发送忘记密码请求的电子邮件 所以 我编写了如下所示的代码 用户服务 await resetPasswordJo
  • ScyllaDB 是否支持 OR 运算符?

    scyladb 中 SELECT 语句的 WHERE 子句中的 OR 条件如何工作 我已经在电子邮件上创建了二级索引 下面的查询工作正常并返回结果 cqlsh gt select from test d emp where email em
  • Redis是如何实现高吞吐量和高性能的?

    我知道这是一个非常普遍的问题 但是 我想了解允许 Redis 或 MemCached Cassandra 等缓存 以惊人的性能极限工作的主要架构决策是什么 如何维持连接 连接是 TCP 还是 HTTP 我知道它完全是用C写的 内存是如何管理
  • 如何使用c#从数据桶中获取所有文档?

    如何获取数据桶中的所有文档 我尝试过一个示例 但我只能获得一个特定的文档 这是我的代码 CouchbaseClient oclient oclient new CouchbaseClient vwspace data bucket name
  • 使用 Cassandra 进行单元版本控制

    我的应用程序使用 AbstractFactory 作为 DAO 层 因此一旦实现了 HBase DAO 系列 创建 Cassandra DAO 系列并从多个角度查看差异对我来说将是非常好的 不管怎样 试图做到这一点 我看到 Cassandr
  • 在 mongodb 和 nodejs 中对博客和评级进行建模

    我有一个博客集合 其中包含用户给予的标题 正文和综合评分 另一个集合 评级 其架构引用了博客 以对象 ID 的形式对博客进行评级 如果有的话 的用户以及他们给出的评级 即 1 或 1 当特定用户按照 最新优先 的顺序浏览博客时 比如每页 4
  • 一次更新猫鼬中的多个文档

    我有一个用户文档数组 每个用户都有关注者属性 它是一个数字 我只想将此属性增加 1 然后立即更新数据库中的所有这些用户文档 更多细节 在请求中 我有一组用户 id 我使用这些 id 进行查询以获取一组用户文档 const users awa

随机推荐

  • 禅道后台命令执行漏洞二

    漏洞简介 禅道是第一款国产的开源项目管理软件 它集产品管理 项目管理 质量管理 文档管理 组织管理和事务管理于一体 是一款专业的研发项目管理软件 完整地覆盖了项目管理的核心流程 禅道管理思想注重实效 功能完备丰富 操作简洁高效 界面美观大方
  • vi编辑器的使用

    一 实验目的 理解vi的的三种运行模式及其切换方法 学会使用vi的各种操作命令进行文本文件编辑 用vi编写Linux下C程序 会用gcc编译 二 实验环境 一台装有Linux的机器 系统里面有gcc编译 三 实验内容 1 不保存直接退出 1
  • tomcat配置域名及默认访问页面

    1 配置80端口 在tomcat的conf server xml文件中的
  • 三子棋的实现--二维数组的应用

    通过对数组 函数 循环知识的应用我们可以独立地创建一个项目 三子棋 首先我们对于三子棋的实现要有一个大概的思路和逻辑 文件的创建 工欲善其事必先利其器 为了更好地完成项目 先创建三个文件 两个源文件 一个头文件 测试文件 test c 游戏
  • 使用druid-spring-boot-starter配合sharding报错

    在使用springboot时 为了方便配置 一般会使用启动器 不用单独进行 Bean 今天在增加sharding时一直出现找不到mapper的异常 对mapper加注解 加扫描包都不行 后来将druid spring boot starte
  • 安装指定版本nodejs

    要在Linux上安装指定版本的Node js 您可以使用Node Version Manager NVM NVM是一个用于管理多个Node js版本的工具 它允许您在同一系统上安装和切换不同的Node js版本 以下是使用NVM在Linux
  • 数字电源核心理论-“伏妙平衡“与“安秒平衡“

    数字电源 数字电源核心理论 伏妙平衡 与 安秒平衡 最后一个bug 2020 10 14 22 54 16 341 收藏 3 文章标签 编程语言 xhtml xmpp jrebel dwr 版权 1 聊一聊 今天跟大家分享的是迈克在本公众号
  • es批量增删改

    批量增删改 bulk 操作将文档的增删改查一系列操作 通过以此请求全部做完 减少网络传输次数 POST bulk 注意 bulk操作的形式是多个json 每个json写完必须换行 而在json内则不可以换行 多个json之间操作互不影响 即
  • C++标准模板库(STL)

    C 标准模板库 STL vector Introduction vector 长度根据需要而自动改变的数组 定义 vector
  • Oracle数据库插入大量数据

    insert into table name select rownum from dual connect by level lt 100 以上命令向表中插入了数列1 2 3 100
  • 机器学习--决策树

    一 决策树简介 决策树 DecisionTree 又称为判定树 是另一种特殊的根树 它最初是运筹学中的常用工具之一 之后应用范围不断扩展 目前是人工智能中常见的机器学习方法之一 决策树是一种基于树结构来进行决策的分类算法 我们希望从给定的训
  • idea快捷键汇总mac_mac版本IDEA快捷键

    本文中的快捷键均为系统默认配置 一 mac系统键盘和符号对应关系 1 Control 或 Ctrl 2 Caps Lock 3 Command 或 Cmd 4 Option 或 Alt 5 Shift 二 mac系统自有快捷键 1 comm
  • 深入学习jquery源码之each()

    each 遍历一个数组或对象 可以是DOM json等格式 等价于for循环 返回值 jQuery each callback 参数 对于每个匹配的元素所要执行的函数 概述 以每一个匹配的元素作为上下文来执行一个函数 意味着 每次执行传递进
  • java JDBC连接数据库代码大全

    使用JDBC操作数据库 1 JDBC基础 JDBC简介 JDBC Java Database Connectivity 是一种可以执行SQL的Java API 通过它可以用一种API操作不同的数据库 JDBC驱动 不同数据库间 标准的SQL
  • 关于Linux下ISE和vivado安装cable usb驱动的问题

    由于先前安装Android Studio一直不成功 一气之下 本人重装了系统 导致之前装的驱动什么的都没有了 这时再安装vivado 检测不到驱动 这里介绍怎么安装cable usb的驱动 供参考 要安装这个驱动 我之前是安装了ISE 然后
  • 内存超频时序怎么调_最高4133MHz,光威血影DDR4内存B550平台超频指南

    Zen1 Zen 和Zen2超频内存时 一般是用Thaiphoon搭配DRAM Calculator for Ryzen自动计算时序 电压等参数 Zen3还没获得DRAM Calculator for Ryzen支持 超频内存得手动调节 近
  • 你知道什么是DBA吗?

    数据库管理员 英文是Database Administrator 简称DBA 这个职位对不同的人意味着不同的意义 一个小的软件开发工作室和一个分工高度明细的大公司相比 DBA的职责来得更加宽泛一些 一个公司 不管它是自己开发应用软件 还是购
  • ROS2与ROS1对比

    提示 ROS初学小白 文章目录 前言 一 ROS1与ROS2对比 二 ROS1创建工作空间 2 1 创建工作空间 Creat ROS Working Paths 2 2 用VScode打开 Start VScode 2 3 创建功能包 Cr
  • org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 1 i

    出现的原因是maven内置1 6版本的tomcat 无法把编译jsp 所以把tomcat版本改成高版本1 7 maven没有实现1 8插件 如果改成1 8会报错
  • Redis基础【完整版】:简介和常用命令、全面key操作、五种数据类型的增删改查、Redis与Python交互(附源代码)

    目录 一 Redis简介和常用命令 1 Reids简介 2 redis常用命令 进入redis 查看数据库版本 切换数据库 退出redis 二 全面key操作 1 查看当前数据有哪些键 2 创建数据 3 获取数据 4 获取数据如果显示是十六