惬意上手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 redisr = 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,本篇文章到此为止,感谢阅览🌹🌹🌹

 

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

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

相关文章

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

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

OpenCV和Mediapipe实现摸嘴或鼻检测

目录 引言 1.过程简介 2. 代码结构 2.1 导入库 2.2 初始化模型 2.3 读取视频流或摄像头 2.4 初始化FPS计算 2.5 主循环 2.6 转换BGR图像为RGB图像 2.7 运行姿势检测模型和手部检测模型 2.8 绘制姿势关键点及连接线 2.9 检测手部关键点 2.10 判断手部与鼻子、嘴的相对…

使用Flask快速搭建轻量级Web应用【第127篇—Flask】

使用Flask快速搭建轻量级Web应用 在Web开发领域,选择适合项目需求的框架至关重要。Flask,一个轻量级的Python Web框架,以其简洁、灵活和易扩展的特性而备受开发者青睐。本文将介绍如何使用Flask迅速搭建一个轻量级的Web应用,并通过…

数学建模——蒙特卡洛法

目录 1.介绍2.可以做的题型3.实战3.1求pi的值3.2求定积分x^2 的值 参加了大大小小很多场比赛了,但是都是混子,但还是打算记录一下吧,系统认真过一遍。后续功力深厚,会拓展写的文章,目前是干货,一些背景啥的…

C#多线程(5)——异步方法async与await

在上一章节中&#xff0c;为大家介绍了C#多线程&#xff08;4&#xff09;——任务并行库TPL&#xff0c;TPL是从.NetFramwork4.0后引入的基于异步操作的一组API&#xff0c;核心关注于任务【 T a s k 和 T a s k < T > \textcolor{red}{Task 和 Task<T>} Task和Ta…

轴向磁通电机(轴向电机)属于高效节能型电机 本土企业已具备高性能产品生产实力

轴向磁通电机&#xff08;轴向电机&#xff09;属于高效节能型电机 本土企业已具备高性能产品生产实力 按照磁通路径方向不同&#xff0c;电机可分为径向磁通电机以及轴向磁通电机两种类型。轴向磁通电机又称轴向电机&#xff0c;指电机旋转轴与磁通方向平行的磁通电机。与径向…

Ai-M61-32SU+字库+LCD

Ai-M61-32SU 有4M flash&#xff0c;可以下载一个200多K的GB2312_80字库 一、将gb2312_80.bin(字库文件)烧录到Ai-M61-32SU中 1、将gb2312_80.bin放到工程的根目录 2、修改flash_prog_cfg.ini文件&#xff0c;增加了partition和media部分 [cfg] # 0: no erase, 1:programmed …

js视频上传的方法

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

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

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

Pytorch基础(21)-- torch.repeat_interleave()方法

分享一下自己目前在维护的Github项目&#xff0c;由于本人博士阶段接触了一个全新的研究方向-----使用机器学习、强化学习、深度学习等方法解决组合优化问题&#xff0c;维护这个项目的目的&#xff1a; &#xff08;1&#xff09;记录自己阅读过的paper&#xff0c;同时分享一…

【数学建模】熵权法 Python代码

熵权法是一种客观的赋权方法&#xff0c;它可以靠数据本身得出权重。 依据的原理&#xff1a;指标的变异程度越小&#xff0c;所反映的信息量也越少&#xff0c;其对应的权值也应该越低。 import numpy as np#自定义对数函数mylog&#xff0c;用于处理输入数组中的0元素 def m…

ROS机器人操作系统底层原理及代码剖析

本文介绍ROS机器人操作系统&#xff08;Robot Operating System&#xff09;的实现原理&#xff0c;从最底层分析ROS代码是如何实现的。 1、序列化 把通信的内容&#xff08;也就是消息message&#xff09;序列化是通信的基础&#xff0c;所以我们先研究序列化。 尽管笔者从事…

jenkins部署go应用 基于docker

丢弃旧的的构建 github 拉取代码 拉取代码排除指定配置文件 报错 环境变量失效 服务器版本为1.21.6 但是一直没有生效

字符串|替换数字

卡码网题目链接 #include<iostream> using namespace std; int main() {string s;while (cin >> s) {int count 0; // 统计数字的个数int sOldSize s.size();for (int i 0; i < s.size(); i) {if (s[i] > 0 && s[i] < 9) {count;}}// 扩充字符…

6.同步异步、正则表达式

JS执行机制 js的特点&#xff1a;单线程&#xff0c;同一时间只能做一件事 可以通过多核CPU解决这个问题&#xff0c;允许js脚本创建多个线程&#xff0c;于是js出现了同步和异步 同步 程序执行的时候按照顺序依次执行 异步 程序执行的时候&#xff0c;会跳过某个步骤继续…

基于Springboot的驾校预约学习系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的驾校预约学习系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

fate隐私求交案例

intersect组件是解决纵向联邦学习中的隐私求交问题 fate隐私求交的方式有三种&#xff1a;raw,rsa,dh。raw方式不安全&#xff0c;rsa和dh方式是安全的&#xff0c;dh是基于对称加密的安全交集 rsa是基于RSA(非对称加密)的安全交集&#xff0c;&#xff0c;dh方法也用于安全的…

供应链金融新篇章:2001-2022年上市公司金融水平测算概览

数据说明&#xff1a;参考周兰和吴慧君&#xff08;2022&#xff09;的方法测算出2001-2022年上市公司供应链金融水平&#xff0c;供大家研究使用。数据来源&#xff1a;企业年报等。时间跨度&#xff1a;2001-2022年 数据范围&#xff1a;A股上市公司 数据指标&#xff1a;…

实现swiper 3d 轮播效果

先上个效果图&#xff0c;代码可以直接拿~ 安装swiper和vue-awesome-swiper 因为项目用的是nuxt2&#xff0c;所以考虑到swiper的兼容问题&#xff0c;选择的是"swiper": “^5.2.0” 首先是安装swiper和vue-awesome-swiper&#xff0c;并指定版本 npm install s…

基于Unity3D的AVG卡牌游戏设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 C# 3 1.2 Unity3D 3 1.3 UGUI 3 1.4 XML 4 1.5 原型设计模式 4 1.6 本章小结 4 2 系统分析 5 2.1 用户需求 5 2.2 功能需求 5 2.3 非功能需求 6 2.4 本章小结 6 3 系统设计 7 3.1 系统该要设计 7 3.2 系统详细设计 7 3.2.…