redis五种数据类型

news2024/11/25 7:10:23

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

1.String(字符串)

这是redis中最基本的数据类型,格式有点像键值对,一个key对应一个value,声明格式如下:

set key value,例如:set key1 "hello world!",此时会生成一个值为world的名为key1的键值对。

我们使用get关键字获得该键值对的值:get key1,可以看到redis输出了我们之前设定好的值。

getrange关键字用于获得字符串中的子字符串,getrange的具体格式和参数为getrange key start end,例如 getrange key1 0 3

获得0到3的字符,注意字符串从0开始。

getset关键字用于键值对的更新和旧值的输出,具体格式为 getset key value,例如 getset key1 "goodbye!"

此时key1的值已经变为goodbye,我们使用get查看一下:

发现已经是修改后的值了。

getbitsetbit是对于值的二进制码的操作,英文字符1个字节8个二进制位,中文字符2个字节16个二进制位。

例如hello的二进制码(ascii码的二进制格式)为01101000 01100101 01101100 01101100 01101111

getbit是获取一个键值对中任意一位的二进制码,setbit则是修改一个键值对中任意一位的二进制码,注意此时的位数是转换为二进制码以后的位数!

mget可以获取多个键值对的值,如果输入的键名有不存在的,对应的值会返回特殊值nil

其他String的关键字可以去下方网站寻找

String教程


2.Hash(哈希)

hash实际上可以理解为是String字符串的集合,也就是键值对的集合,我们可以在一个hash对象中存储多个键值对。

使用hmset 关键字进行定义,例如hmset key2 field1 "jack" field2 "rose" field3 "tony",这样就生成了一个名为key2的hash对象。

使用hget关键字进行值的获取,例如hget key2 field3,可以获取到key2这个hash中field3键的值,redis输出“tony”

 但是hget每次只能获得一个键值对,如果获得多个会报错

hdel关键字可以对hash对象中的一个或者多个键值对进行删除。例如hdel key2 field1 field2

hexists关键字用于查看hash对象中是否存在该字段。例如hexists key2 field1,如果有该字段,redis会返回1,没有会返回0。

hgetall关键字会返回当前指定hash对象的所有字段。例如hgetall key2,redis会输出key2这个hash对象拥有的所有字段。

其他关键字可以点击下方网站查看

Hash教程


3.List(列表)

List在逻辑结构上类似栈,采用先进后出的策略。

通过lpush关键字,创建并压入一个值。

为了更清楚的理解list的逻辑结构,我们多压入几个值。

lpush key3 why
lpush key3 yes
lpush key3 no
lpush key3 safe
lpush key3 dangerous

此时key3这个list中有五个值,分别是why,yes,no,safe,dangerous。

我们使用lrange关键字输出前5个值lrange key3 0 5,结果为

我们可以发现,顺序是倒过来的,这样不太直观,我们可以使用另一个关键字lpop,这个关键字可以弹出list对象第一个元素,弹出的意思是获取他的值然后将它从list中删除。

我们输入lpop key3,结果为

此时我们发现弹出的第一个元素仍然是我们输入的最后一个元素dangerous。

为了体现弹出的特性,我们再使用lrange关键字输出第一个到第五个元素的输出

此时list中只有4个元素,说明dangerous元素已经被删除。

用图片简单解释一下原理:

此时压入第一个元素why,why位于list的最底部,我们再压入第二个元素yes

可以看到是这样的情况,我们再将后续元素都压入:

然后我们弹出第一个元素,注意,弹出是从list最上方,也就是栈顶弹出。

此时位于最上方的元素是最后压入的元素dangerous,所以弹出元素dangerous。

其他List对象关键字可以点击下方网址查看

List教程


4.Set(集合)

set对象中只能存放String对象

set和list的区别是set对象中不能出现重复的元素,并且是无序的。其余和list较为相似。

使用sadd关键字可以添加元素

sadd key4 java
sadd key4 c++
sadd key4 c#
sadd key4 python
sadd key4 java

因为之前添加过java这一元素,所以此时最后一次添加不会成功,redis会返回0。

其他Set对象的关键字可以点击下方网址查看

Set教程


5.Sorted Set(有序集合)

sorted set对象与set的区别是set对象是无序的,但是sorted set对象是有序的。他同样具有set的特点——只能存放String对象且不允许重复元素出现。

sorted set对象实现有序排序依赖一个特有的属性——分数(score),分数是一个double类型的值,sorted set对象允许score重复,但是不允许存放对象的值重复。

我们使用zadd关键字进行对象的插入和更新。例如:

此时我们看最后一次输入的score值为4,但是成员java是重复的,redis返回0。

使用zrange关键字进行输出,通过withscores由分数进行排序。

我们发现,此时java的score变成了4,说明之前的zadd关键字对java这个对象的score值进行了更新。

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

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

相关文章

Rust结构体和枚举类

文章目录 元组结构体结构体枚举类 Rust初步上手⚙所有权 元组结构体 元组结构体是最简单的结构体,可以粗暴地理解为是有名字的元组,二者的区别如下。 let tup: (i32, f64, u8) (500, 6.4, 1);struct Test(i32, f64, u8); let t Test(500,6.4,1)第一…

操作系统——文件在外存中的分配方式(王道视频p61 P62)

1.总体概述: 连续分配 —— 链接分配 —— 索引分配 (1)对于顺序分配,这种方式 基本不会使用了, 因为 它存在一个 核心的问题就是 没法更新;不过,还是要注意它的 “文件目录”——其中存放了…

Memcached构建缓存服务器

Memcache介绍 1、特点 内置存储方式----------为了提高性能,memcached中保存的数据都存储在memcache内置的内存存储空间中。由于数据仅存在于内存中,重启操作系统会导致全部数据消失 简单key/value存储--------------服务器不关心数据本身的意义及结构&…

NSSCTF web刷题记录4

文章目录 [NSSRound#4 SWPU]1zweb(revenge)[强网杯 2019]高明的黑客[BJDCTF 2020]Cookie is so subtle![MoeCTF 2021]fake game[第五空间 2021]PNG图片转换器[ASIS 2019]Unicorn shop[justCTF 2020]gofs[UUCTF 2022 新生赛]phonecode[b01lers 2020]Life On Mars[HZNUCTF 2023 f…

【qemu逃逸】GACTF2020-babyqemu

前言 虚拟机用户名:root 无密码 设备逆向 题目去掉的符号,经过逆向分析,实例结构体如下: 可以看到 arr_int_8 数组后面存在一个函数指针,不用想基本上就是劫持该函数指针了。 denc_mmio_read 函数 这里存在越界读…

.net core 到底行不行!超高稳定性和性能的客服系统:性能实测

业余时间用 .net core 写了一个升讯威在线客服系统。并在博客园写了一个系列的文章,介绍了这个开发过程。 我把这款业余时间写的小系统丢在网上,陆续有人找我要私有化版本,我都给了,毕竟软件业的初衷就是免费和分享,后…

最新知识付费变现小程序源码/独立后台知识付费小程序源码/修复登录接口

最新知识付费变现小程序源码,独立后台知识付费小程序源码,最新版修复登录接口。 主要功能 会员系统,用户登录/注册购买记录 收藏记录 基本设置 后台控制导航颜色 字体颜色 标题等设置 流量主广告开关小程序广告显示隐藏 广告主审核过审核…

VS2022创建win32汇编项目

文章目录 一、下载安装win32环境1.1、下载网址:https://masm32.com/1.2、解压缩安装1.3、安装路径1.4、安装masm32 SDK1.5、安装成功1.6、导入lib1.7、配置默认,可以根据自己需求修改1.8、启动界面二、vs2022 安装过程略过。。。2.1、创建项目2.2、填写项…

高通Android 8.1 扫码枪无法扫sn包含2或者全部是2的问题

背景:由于近期工厂生产,测试突然反馈扫码枪扫sn总是丢失2,比如 AXB2SHS822009997/LSXG 结果显示是 AXBSHS800997/LSX 于是我叫测试找了之前可以版本然后抓日志进行对比发现,确实只有2这个数字无法扫,如果把2这一位改成…

California Science Museum

文章目录 1. University of Southern California(USC)2. NASA航天飞机3. 返回舱4. Others彩蛋1: Paris, capital of France彩蛋2: Switzerland(瑞士)1. University of Southern California(USC) 2. NASA航天飞机

运动耳机品牌排行榜,推荐几款优秀的运动耳机

​说起耳机,相信大家都比较熟悉,特别是对于喜欢运动的爱好人士来说,那更是随身携带着。随着运动耳机的增长,大家都不知道该如何选择了。对于运动耳机除了需要佩戴稳固舒适之外,还有就是音质表现、防水性能、通话质量等…

外汇天眼实勘功能升级,带你沉浸式“云”穿交易商现场!

最近,外汇天眼新出了一个功能,这个功能可了不得了,不管你在国外还是在国内,它都能带你走进交易商现场。不过在介绍该功能之前,天眼君先问大家几个问题:在进行外汇交易前,你对自己的交易平台了解…

项目启动∣得益乳业引进企企通采购供应链管理+智采商城平台,切实提升供应链效率

近日,山东得益乳业股份有限公司(以下简称“得益乳业”)与企企通成功召开采购供应链管理智采商城双项目启动会。双方高层领导及项目团队关键成员,一同出席本次启动会。 本次合作以企企通数字化采购解决方案为基础,结合得…

基于 golang 从零到一实现时间轮算法 (三)

引言 本文参考小徐先生的相关博客整理,项目地址为: https://github.com/xiaoxuxiansheng/timewheel/blob/main/redis_time_wheel.go。主要是完善流程以及记录个人学习笔记。 分布式版实现 本章我们讨论一下,如何基于 redis 实现分布式版本的…

Java零基础手把手保姆级教程_类和对象(超详细)

文章目录 Java零基础手把手保姆级教程_类和对象(超详细)1. 类和对象1.1 类和对象的理解1.2 类的定义1.3 对象的使用1.4 学生对象-练习1.5测测你掌握了没? 2. 对象内存图2.1 单个对象内存图2.2 多个对象内存图2.3 多个对象指向相同内存图 3. 成…

从首届中国测绘地理信息大会,解读2023年度国产GIS创新关键词

创新是什么?这是各行各业持续思考的问题。 第一届中国测绘地理信息大会已进入倒计时!这是中国测绘学会、中国地理信息产业协会和中国卫星导航定位协会共同主办的全国性高端盛会。据悉,本次大会将有1个主论坛、38场分论坛,近2万平…

YOLOv8改进有效涨点系列->多位置替换可变形卷积(DCNv1、DCNv2、DCNv3)

本文介绍 这篇文章主要给大家讲解如何在多个位置替换可变形卷积,它有三个版本分别是DCNv1、DCNv2、DCNv3,在本篇博文中会分别进行介绍同时进行对比,通过本文你可以学会在YOLOv8中各个位置添加可变形卷积包括(DCNv1、DCNv2、DCNv3)&#xff0…

【每日OJ题—— 142. 环形链表 II (链表)】

每日OJ题—— 142. 环形链表 II (链表) 1.题目:142. 环形链表 II 2.方法讲解2.1.解法一:2.1.1.图文解析2.1.2.代码实现2.1.3.提交通过展示 2.2解法二:2.2.1图文解析2.2.2代码实现2.2.3.提交通过展示 1.题目:142. 环形链…

山西电力市场日前价格预测【2023-11-07】

日前价格预测 预测说明: 如上图所示,预测明日(2023-11-07)山西电力市场全天平均日前电价为318.54元/MWh。其中,最高日前电价为514.01元/MWh,预计出现在18: 00。最低日前电价为192.95元/MWh,预计…

ZKP16 Hardware Acceleration of ZKP

ZKP学习笔记 ZK-Learning MOOC课程笔记 Lecture 16: Hardware Acceleration of ZKP (Guest Lecturer: Kelly Olson) The What and Why of Hardware Acceleration Hardware acceleration is the use of dedicated hardware to accelerate an operation so that it runs faster…