惬意上手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.rhkb.cn/news/278592.html

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

相关文章

Linux:搭建ntp服务器

我准备两个centos7服务器 一个为主服务器连接着外网,并且搭建了ntp服务给其他主机同步 另外一个没有连接外网,通过第一台设备去同步时间 首先两个服务器都要安装ntp软件 yum -y install ntp 再把他俩的时间都改成别的 左侧的是主服务器,主…

07|链(下):想学“育花”还是“插花”用RouterChain确定客户意图

任务设定 鲜花养护(保持花的健康、如何浇水、施肥等)鲜花装饰(如何搭配花、如何装饰场地等) 如果接到的是第一类问题,你要给ChatBot A指示;如果接到第二类的问题,你要给ChatBot B指示。 整体…

数据可信流通,从运维信任到技术信任

信任 共同观点: 信任是涉及交易或交换关系的基础 身份可确认利益可依赖能力有预期行为有后果 数据流通中的不可信风险 内循环:数据持有方在自己的运维安全域内对自己的额数据使用和安全拥有全责外循环:数据要素在离开持有方安全域后&#…

【网络安全】 MSF生成木马教程

本文章仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若读者因此作出任何危害网络安全的行为,后果自负,与作者无关。 环境准备: 名称系统位数IP攻击机Kali Linux6410.3.0.231客户端Windows 76410.3.0.234…

ACWing--基础算法--贪心(部分题解)

目录 906.区间问题--区间分组 906.区间问题--区间分组 原题: 给定 N 个闭区间 [ai,bi],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。 输出最小组数。 输…

Linux 部署 Samba 服务

一、Ubuntu 部署 Samba 1、安装 Samba # 更新本地软件包列表 sudo apt update# 安装Samba sudo apt install samba# 查看版本 smbd --version2、创建共享文件夹,并配置 Samba 创建需要共享的文件夹,并赋予权限: sudo mkdir /home/test sud…

分布式事务的解决方案--Seata架构

一、Seata的XA模式 二、AT模式原理 三、TCC模式原理 四、MQ分布式事务 异步,非实时,实现最终的一致性。 四、分布式事务的解决方案

VMware下创建虚拟机

Centos7是比较常用的一个Linux发行版本,在国内的使用比例比较高 安装完VMware一定要检查虚拟网卡有没有安装成功,如果没有VMnet1和VMnet8 虚拟机是无法上网的,就需要卸载重启电脑重新安装 控制面板—网络和Internet—网络连接 快捷方式打开&a…

用`ORDER BY RAND()`随机化你的查询结果

[TOC](用ORDER BY RAND()随机化你的查询结果) 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 《java 专栏》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕&…

1.中医学习-总论

目录 1.为什么要学中医 2.什么是中医 介绍 中医例子1: 中医例子2: 中医最高境界“大道至简” 中医讲究的是本质 中医核心:阴阳、表里、寒热、虚实 ​编辑医不叩门 3.阴阳 1.一天中的阴阳 2.一年中的阴阳 3.阴阳之间的关系 4.阴阳四季的变化 …

代码随想录算法训练营第二十五天|216.组合总和III,17.电话号码的字母组合

216.组合总和III 题目 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。 解集不能包含重复的组合。 示例 1: 输入: k 3, n 7 输出: [[1,2,4]] 示例 2: 输入…

3. ElasticSearch搜索技术深入与聚合查询实战

1. ES分词器详解 1.1 基本概念 分词器官方称之为文本分析器,顾名思义,是对文本进行分析处理的一种手段,基本处理逻辑为按照预先制定的分词规则,把原始文档分割成若干更小粒度的词项,粒度大小取决于分词器规则。 1.2 …

Qt学习--继承(并以分文件实现)

基类 & 派生类 一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名。 总结:简单来说,父类有的,子…

对OceanBase进行 sysbench 压测前,如何用 obdiag巡检

有一些用户想对 OceanBase 进行 sysbench 压测,并向我询问是否需要对数据库的各种参数进行调整。我想起有一个工具 obdiag ,具备对集群进行巡检的功能。因此,我正好借此机会试用一下这个工具。 obdiag 功能的比较丰富,详细情况可参…

【linux】进程间通信1--管道

文章目录 进程间通信是什么?如何做? 管道匿名管道命名管道 进程间通信 是什么? 进程间通信(Inter-Process Communication,IPC)是指在操作系统中,不同的进程之间进行数据交换、信息传递和同步操…

函数-Python

师从黑马程序员 函数初体验 str1"asdf" str2"qewrew" str3"rtyuio" def my_len(data):count0for i in data:count1print(f"字符串{data}的长度是{count}")my_len(str1) my_len(str2) my_len(str3) 函数的定义 函数的调用 函数名&a…

使用Navicat远程连接Linux中的MySQL

一、登录MySQL数据库 mysql -uroot -pXjm123456 二、使用mysql数据库 use mysql; 三、查询user表中包含host的字段 select user,host from user;### 该字段中,localhost表示只允许本机访问,可以将‘localhost’改为‘%’,‘%’表…

机器学习-04-分类算法-01决策树

总结 本系列是机器学习课程的系列课程,主要介绍机器学习中分类算法,本篇为分类算法开篇与决策树部分。 参考 决策树——ID3和C4.5(理论图解公式推导) 策略产品经理必读系列—第七讲ID3、C4.5和CART算法详解 决策树(…

高精度计算

主页:(*∇`*) 咦,又好了~ xiaocr_blog (1)数据的接收方法和存储方法: 当输入的数据很长的时候,可采取字符串方式输入,这样可以输入位数很长的数,利用字符串函数和操作运算,将每一位…

Linux 常见驱动框架

一、V4L2驱动框架 v4l2驱动框架主要对象: (1)video_device:一个字符设备,为用户空间提供设备节点(/dev/videox),提供系统调用的相关操作(open、ioctl…) (2)v4l2_device&#xff1a…