redis五种数据类型

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.hqwc.cn/news/162027.html

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

相关文章

下载git步骤

文章目录 导文1.软件下载2.git安装3.测试git 导文 下载git的详细步骤 1.软件下载 可以自己去网上下载,根据自己电脑的系统类型是多少位的,去下载对应的安装包。 下载地址:Git - Downloads 根据自己的 操作系统进行选择,按需选择…

中期科技:智慧公厕打造智能化城市设施,提升公共厕所管理与服务体验

智慧公厕是利用先进的技术和创新的解决方案来改进公厕的设施和管理。借助物联网、互联网、5G/4G通信、人工智能、大数据、云计算等新兴技术的集成,智慧公厕具备了一系列令人惊叹的应用功能。从监测公厕内部人体活动状态、人体存在状态,到空气质量情况、环…

想学计算机编程从什么学起?零基础如何自学计算机编程?中文编程开发语言工具箱之渐变标签组构件

想学计算机编程从什么学起?零基础如何自学计算机编程? 给大家分享一款中文编程工具,零基础轻松学编程,不需英语基础,编程工具可下载。 这款工具不但可以连接部分硬件,而且可以开发大型的软件,…

c语言 简单认识 指针和结构体

指针 代码 #include <stdio.h>int main(){int a 10;//指针类型需要与变量的类型相同&#xff0c;且后面需要添加一个*符号&#xff08;注意这里不是乘法运算&#xff09;表示是对于类型的指针int * p &a; //这里的&并不是进行按位与运算&#xff0c;而是取…

如何记录每天的工作日程?电脑手机通用的日程管理软件

在工作时间有限&#xff0c;但工作任务愈加繁多的现在职场中&#xff0c;要求每一个职场人士做好高效日程管理。通过高效管理日程&#xff0c;我们可以更好地组织和安排任务&#xff0c;合理分配时间和优先级&#xff0c;这有助于我们更专注地进行工作&#xff0c;减少时间的浪…

51单片机锅炉监控系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机锅炉监控系统仿真设计( proteus仿真程序原理图报告讲解视频&#xff09; 1.主要功能&#xff1a;讲解视频2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单&&下载链接资料下载链接&#xff08;可点击&#xff09;&#xff1a; 51单片机锅炉监控系统仿…

1.1 HTML4

一. 前言 1. 两位先驱 艾伦麦席森图灵 二战时期&#xff0c;破译了德军的战争编码一英格玛。让二战提前2年结束&#xff0c;拯救了上千万人的生命。设立图灵奖&#xff0c;被后人誉为:人工智能之父。 约翰冯诺依曼 制订了现代计算机标准一一冯诺依曼体系结构。提出:计算机要…

Proteus仿真--12864LCD显示计算器键盘按键实验(仿真文件+程序)

本文主要介绍基于51单片机的12864LCD液晶显示电话拨号键盘按键实验&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真图如下 本设计主要介绍计算器键盘仿真&#xff0c;按键按下后在12864液晶上显示对应按键键值 仿真运行视频 Proteus仿真--12864LCD显示计算器…

优思学院《供应商质量工程师SQE的一天》

优思学院今天利用一个故事《供应商质量工程师的一天》来谈谈供应商质量工程师的日常工作内容以及质量管理的四个要点。 今天是星期五&#xff0c;就是供应商质量工程师小优最有挑战的一天。他需要在一天内完成对三家不同的供应商工厂的抽样检验、过程审核&#xff0c;并对结果…

多种循环法打印乘法表

1 问题 使用多种循环法打印乘法表&#xff0c;有助于巩固夯实循环的语法及用法。 使用for-for、for-while、while-for方法实现乘法表。 2 方法 &#xff08;1&#xff09;for-for:使用两个for.. in..来实现乘法表。 &#xff08;2&#xff09;for-while:使用一个for语句再一个w…

C++性能优化笔记-6-C++元素的效率差异-7-类型转换

C元素的效率差异 类型转换signed与unsigned转换整数大小转换浮点精度转换整数到浮点转换浮点到整数转换指针类型转换重新解释对象的类型const_caststatic_castreinterpret_castdynamic_cast转换类对象 类型转换 在C语法中&#xff0c;有几种方式进行类型转换&#xff1a; // …

ConnectionError: HTTPSConnectionPool

ConnectionError: HTTPSConnectionPool(host‘zbbfxstatic.figtingdream.com’, port443): Max retries exceeded with url: /api/cache (Caused by NewConnectionError(‘<urllib3.connection.HTTPSConnection object at 0x00000249795AD9A0>: Failed to establish a ne…