惬意上手Redis

Redis介绍

Redis(全称为REmote Dictionary Server)是一个开源的、内存中的数据存储结构,主要用作应用程序缓存或快速相应数据库。

REmote Dictionary Server:

有道翻译Redis是“远程字典服务”,远程不过是远程访问,而字典二字就是Redis的特点,他的数据存储的特点是根据键和值存储的, 一个键就类似于MySQL中的一个表,每个键对应的值有不同的类型。键不能重复。

 先展示一下Redis的可视化工具RDM(Redis Desktop Manager)的界面所作的显示,你或许会清楚一些:

图中显示是db0数据库下的h1键中存储的数据,数据类型是hash,hash类型就是一个键(key)对应一个值(value)。# 代表自动生成的序号。

再看另外一个类型 list:

list类型就是一个列表,只有值。很简单吧。下面还会介绍其他数据类型。

细心的人可能会发现我的数据库有13个,那是Redis自动创建的,是不是比MongoDB还要方便,你根本不需要去创建!

Redis安装

redis安装很简单, 但是你如果直接去官网去找安装包是找不到的,因为它本是不支持Windows的,但是你如果去网上找的话,是可以找到可以装在windos的安装包的,我这里直接给你提供链接吧,里面还有RDM:提取码:mop9icon-default.png?t=N7T8https://pan.baidu.com/s/11VY9tXR0q9OTscpoybeo3A?pwd=mop9

安装很简单,但我还是会给你提供一个链接:Redis 安装 | 菜鸟教程 

里面也有相应的安装包。

安装完成后,你的redis的服务会自动打开,打开终端,键入redis-cli 你就你能直接进行操作了:

但是你想看一下Redis的标志性图案的话,要去关闭你的redis服务,并在终端中开启,开启操作如下:

 指令:redis-server "D:\Program Files\Redis\redis.windows.conf"(可能只在我的电脑上适用)

 这条指令的意思就是运行redis-server.exe文件,外加一个redis.windows.conf配置文件,去你的Redis的安装路径就可以找到。

上图的界面开启服务后就不能操作其它了,想要操作再去开一个框框进行连接。

Redis常用终端操作 

  1. 启动 Redis

    • redis-server [--port 6379]:启动 Redis 服务器,默认端口号是 6379。
    • redis-server [xx/xx/redis.conf]:通过配置文件启动 Redis。
  2. 连接 Redis

    • ./redis-cli [-h 127.0.0.1 -p 6379]:连接到 Redis 服务器。
  3. 停止 Redis

    • redis-cli shutdown 或 kill redis-pid:停止 Redis 服务器。
  4. 测试连通性

    • ping:检查 Redis 是否可用。
  5. 键操作命令

    • keys *:获取所有键。
    • dbsize:获取键总数。
    • exists key [key ...]:查询键是否存在。
    • del key [key ...]:删除键。
    • type key:查询键类型。
    • move key db:移动键到指定数据库。
    • ttl key:查询键的生命周期。
    • expire key seconds:设置过期时间。
  6. 字符串操作命令

    • set key value:存放键值。
    • get key:获取键值。
    • incr key:递增键值。
    • append key value:追加内容。
    • getrange key start end:获取部分字符。
  7. 集合操作命令

    • sadd key member [member ...]:存储集合值。
    • smembers key:获取所有集合元素。
    • sismember key member:判断集合是否存在元素。
    • scard key:获取集合元素个数。
    • srem key member [member ...]:删除集合元素。

这些指令涵盖了 Redis 的基本操作,你可以根据具体需求使用它们。

Redis的数据类型

 string

string就是字符串类型,存储字符串。 

看到图了吗,里面什么都可以存储,就算你放一本三体进去,我想也是,没有问题的。

用一个TTL的值为-1,他代表永久存储。 

list

 list就是列表,一列是序号,一列(value)是你插入的值。

set

set就是集合, 它和列表的差别就是无序、不重复。

zset 

zset是有序集合,相较set就是根据分数(score)的大小变得有序了 。

hash

哈希,一个键对应一个值,值不能重复。

stream

这个stream老师还没讲,如果讲了我再来更新。但我估计这个不常用。下面是ai的回答:

Redis Stream 是 Redis 5.0 引入的一种新的数据类型,用于处理消息流(Message Stream)。它提供了一种轻量级、可扩展的消息发布与订阅模型,适用于实时消息传递和事件处理。下面介绍一些 Redis Stream 的关键概念和常用操作:

  1. 添加消息到 Stream

    • 使用 XADD 命令向指定的 Stream 中添加消息。
    • 语法格式为:XADD key ID field value [field value ...]
    • key 用来指定 Stream 的名字。
    • ID 用来指定消息的 ID 值,最常用的是 *,表示由 Redis 自动生成 ID。
    • 添加的消息为 key-value 类型,可以一次添加多个消息。
  2. 读取消息

    • 使用 XREAD 命令从一个或多个 Stream 中读取消息。
    • 语法格式为:XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] id [id ...]
    • COUNT 用来获取消息的数量。
    • BLOCK 用来设置阻塞模式和阻塞超时时间,默认为非阻塞。
    • id [id ...] 用来设置读取的起始 ID。
    • 阻塞模式中可以使用 $ 来获取最新的消息 ID。
  3. 获取 Stream 长度

    • 使用 XLEN 命令返回 Stream 中消息的数量。
  4. 获取消息范围

    • 使用 XRANGE 命令返回两个指定 ID 之间的消息范围。

 操作

操作就直接写在python中的操作了,终端的操作想了解自己你可以去了解一下。

python中的操作也比较简单,但是Redis中的每种数据类型的操作都很多,就像python中一样。

 下面仅介绍对list的操作,因为很多,而且大都相似,所以列举完没有必要

  1. lpush:将一个或多个值插入到列表的头部。如果列表不存在,会创建一个空列表并执行 LPUSH 操作。示例代码如下:

    import redis
    
    r = redis.Redis(host="123.156.74.190", port=6379, password="66666666666")
    
    # 添加元素到列表头部
    r.lpush("my_list", 1)  # 结果是1
    r.lpush("my_list", 2, 3, 4)  # 结果是4
    
  2. rpush:将一个或多个值插入到列表的尾部(最右边)。如果列表不存在,会创建一个空列表并执行 RPUSH 操作。示例代码如下:

    # 添加元素到列表尾部
    r.rpush("my_list", 1)  # 结果是1
    r.rpush("my_list", 2, 3)  # 结果是3
    
  3. blpop:移出并获取列表的第一个元素。如果列表为空,会阻塞直到等待超时或发现可弹出元素为止。示例代码如下:

    # 弹出列表的第一个元素
    result = r.blpop("my_list")
    print(result)  # 结果是('my_list', '1')
    
  4. brpop:移出并获取列表的最后一个元素。如果列表为空,会阻塞直到等待超时或发现可弹出元素为止。示例代码如下:

    # 弹出列表的最后一个元素
    result = r.brpop("my_list")
    print(result)  # 结果是('my_list', '3')
    
  5. lindex:通过索引获取列表中的元素。可以使用负数下标,例如 -1 表示列表的最后一个元素。示例代码如下:

    # 获取列表指定索引位置的元素
    value = r.lindex("my_list", 1)
    print(value)  # 结果是2
    
  6. llen:返回列表的长度。示例代码如下:

    # 获取列表的长度
    length = r.llen("my_list")
    print(length)  # 结果是3
    

总之,这些命令可以帮助我们在 Python 中有效地操作 Redis 中的列表数据。如果您想了解更多关于 Redis 列表的操作,可以查看官方文档或其他相关教程。

ok,本篇文章到此为止,感谢阅览🌹🌹🌹

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ingress 实战:从零到一构建高可用服务

Ingress 是 Kubernetes 中一种用于控制流量进入集群的资源。它可以为集群内的服务提供统一的访问入口,并提供一些额外的功能,例如: 路由流量到不同的服务 提供基于路径的路由 提供基于主机的路由 提供 TLS 加密 使用身份验证和授权 Ing…

SQL: 触发器/存储过程/游标的操作

目录 触发器存储过程创建存储过程修改存储过程删除存储过程执行存储过程 游标待续、更新中 触发器 待更新存储过程 定义 是一组TSQL语句的预编译集合,能实现特定的功能 是一种独立的数据库对象,在服务器上创建和运行 类似于编程语言中的过程或函数分类…

SublimeText4 安装

Sublime Text 可以编写html,css,js,php等等,是一个轻量、简洁、高效、跨平台的编辑器。 图1:SublimeText官网 Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件&#…

Java学习记录(十九)多线程(一)

线程 线程是操作系统能进行调度的最小单位,他是被包含在进程中的,一个运行的软件可以看作为一个进程,而在该软件中执行的各种功能自身可以理解为一个线程,可以理解为在软件中互相独立又可以同时进行的功能,他是进程中…

js视频上传的方法

一、视频上传于图片上传类似他们的上传方法一样。路径不同标签不同; 二、直接上效果 三、直接上代码 // // 上传图片 let urls "https://wwz.jingyi.icu/"; let a $("form img") // console.log(a);function fl() {let read document.getE…

计算机网络面经八股-解释一下HTTP长连接和短连接?

在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图…

探索制氮机在农产品保鲜中的应用方式

在现代生活中,农产品保鲜成为老生常谈的话题,水果数次厂商总是在为如何使水果蔬菜能够保存时间长一点而发愁,而制氮机的出现则解决了这一难题,为农产品保鲜技术带来了革命性的变革。本期恒业通小编和您一起了解制氮机在水果,蔬菜保…

k8s+wordpress+zabbix+elastic+filebeat+kibana服务搭建以及测试

一,环境:docker,k8s,zabbix,以及搭建worpdress,elasticsearch,filebeat,kibana 二,主机分配: 名称host详述个人博客3192.168.142.133 搭配mysql8.0.36的数据…

ubuntu安装并使用Anaconda

0、说明 对应着 Python 有 2.x 版本和 3.x 版本,Anaconda 也有 Anaconda2 以及 Anaconda 3 两个版本,考虑其流行度,一般谈及 Anaconda 时,默认为 Anaconda3。本人使用的ubuntu20.04。 1、Anaconda 简介 Anaconda 是一个用于科学…

【大模型API调用初尝试二】星火认知大模型 百度千帆大模型

大模型API调用初尝试二 科大讯飞—星火认知大模型单论会话调用多轮会话调用 百度—千帆大模型获取access_token单轮会话多轮会话 科大讯飞—星火认知大模型 星火认知大模型是科大讯飞开发的,直接使用可以点击星火认知大模型,要调用API的话在讯飞开发平台…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的交通信号灯识别系统(深度学习+UI界面+训练数据集+Python代码)

摘要:本研究详细介绍了一种采用深度学习技术的交通信号灯识别系统,该系统集成了最新的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5等早期算法进行了性能评估对比。该系统能够在各种媒介——包括图像、视频文件、实时视频流及批量文件中——准确地…

Xilinx 7系列FPGA的配置流程

目录 1.4配置流程 1.4.1 设备上电 ​编辑1.4.2 清除配置寄存器 1.4.3 采样模式引脚 1.4.4 同步 ​编辑1.4.5 检测设备ID ​编辑1.4.6 加载配置数据 1.4.7 CRC校验 1.4.8 启动序列 1.4配置流程 对于所有配置模式,7系列的基本配置流程都是相同的&…

算法练习:二分查找

目录 1. 朴素二分查找2. 在排序数组中查找元素的第一个和最后一个位置3. 搜索插入位置4. x的平方根5. 山脉数组的峰值索引6. 寻找峰值7. 寻找旋转排序数组中的最小值8. 点名 1. 朴素二分查找 题目信息: 题目链接: 二分查找二分查找的使用前提为数据具有&…

leetcode精选算法刷题训练篇 之 链表OJ(包含题目链接以及详细讲解)

好好学习,giao哥给你补🥚 1、移除链表元素 难度等级:⭐ 题目链接:移除链表元素 2、链表的中间节点 难度等级:⭐⭐ 题目链接:链表的中间节点 3、反转链表 难度等级:⭐⭐⭐ 题目链接&#x…

C#版开源免费的Bouncy Castle密码库

前言 今天大姚给大家分享一款C#版开源、免费的Bouncy Castle密码库:BouncyCastle。 项目介绍 BouncyCastle是一款C#版开源、免费的Bouncy Castle密码库,开发人员可以通过该项目在他们的 C# 应用程序中使用 Bouncy Castle 提供的各种密码学功能&#x…

git提交代码描述时如何换行(更新时间24/3/12)

问题复现(信心满满使用转义字符换行) 解决方法: 写多个-m字符串的结构可以实现自动换行 注意空格 git commit -m"第一行描述" -m"第二行描述" 效果演示:(强迫症福利)

近700所高校,2024年预算出炉!

办学经费,是高校发展的核心与基石。学校人才培养、科学研究等各项事业的开展,都有赖于教育经费的支持。 近日,全国已有北京、上海、江苏、浙江等20多个省(市、自治区)的高校对外公布了2024年预算经费,小编…

L2-035 完全二叉树的层序遍历(Python)

L2-035 完全二叉树的层序遍历 分数 25 全屏浏览 切换布局 作者 陈越 单位 浙江大学 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度…

深入联合文件系统

Union File System(联合文件系统,UnionFS)是一种轻量级的高性能分层文件系统,它支持将文件系统中的修改信息作为一次提交,并层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,应用看到的…

C# 8.0+版本项目 string不可为空

1.在某一次新建项目的时候发现,新建的项目,写的测试接口,接口的入参有string的参数, 但是调用接口的时候string的参数没有传报了400,很奇怪,也没有语法错误之类的。 2.解决办法 在项目上右键->属性->…