redis 五种数据类型简介

news2024/11/27 14:49:57

c3354a29a9a64990a591368ec475ba8a.jpgredis的五种数据类型是:1、string(字符串);2、hash(哈希);3、list(列表);4、set(集合);5、sort set (有序集合)。其中,string(字符串)是redis中最基本的数据类型,一个key对应一个value,string 可以包含任何数据

 

 

字符串string

字符串是所有编程语言中最常见和最常用的数据类型,而且也是redis最基本的数据类型之一,而且redis中所有key的类型都是字符串,它是一个由字节组成的序列,在Rediss中是二进制安全的。这意味着该类型可以接受任何格式数据,如JPEG图像数据和Json对象说明信息。它是标准的key-value,通常用于存储字符串、整数和浮点。Value可容纳高达512MB的数据

 

添加一个key

image

 

//设置一个key value

set name liwenchao

 

//设置一个3秒的key,value, 3秒后查询就为nil

set name2 lili ex 3

获取一个key的内容

//可以重复多次定义一个key

set name liwenchao

//如上面演示内容

get name

删除一个key

image

 

//删除name=liwenchao这个key

del name

批量设置多个key,value

image

 

//mset key1 value1 key2 value2

mset name1 liwenchao name2 gaolili

批量根据key获取多个value

image

 

//mget key1 key2

mget name1 name2

追加数据

image

 

//append key1 appendvalue

append name1 app

数值递增

image

 

//设置一个key,value为int的值

set num 10

//让num的value自动+1

incr num

数值递减

image

 

//让num的value自动-1

decr num

获取字符串key的长度

image

 

//获取key为name1的value的长度

strlen name1

判断key是否存在

image

 

//有会返回1,没有会返回0

exists name1

查看key的过期时间

image

 

//ttl 查看key的剩余生存时间

// -1为永不过期,

// -2没有这个key

// num key的剩余有效时间

 

重新设置key的过期时间

image

 

expire name3 120

取消key的过期时间变为永久

image

 

persist name3

列表list

列表是一个双向可读可写的管道,其头部是左侧,尾部是右侧,一个列表可以最多包含2^32-1个元素,即4294967295个元素

 

生成列表并插入数据

image

 

//创建list1的列表并插入value1,value2,value3,value3在列表的最左侧

lpush list1 value1 value2 value3

获取列表长度

llen list

向列表追加数据

//从左边追加

lpush list1 name1

//从右边追加

rpush list1 name2 

获取列表指定范围数据

image

 

//name4在最左边,序列号为0 ,name3序列号为1

lrange list2 1 2

 

//如果只有4个元素。0-99可以打印所有的

lrange list2 0 99

移除左右一个元素

image

 

//从列表右边删除第一个

rpop list2

//从列表左边删除第一个

lpop list2

集合set

set是string类型的无序集合,集合中的成员是唯一的,这就意味着集合中不能出现重复的数据,可以在两个不同的集合中对数据进行比对并取值

 

生成集合key

image

 

//生成无序集合set1

sadd set1 v2 v5

追加数据

image

 

//可以看到加入相同数据时,返回为0,表示没变化

sadd set1 v2

查看集合所有数据

image

 

//获取无序集合set1的所有数据

smembers set1

获取集合的差集,交集,并集

//差集,set1有而set2没有的

sdiff set1 set2

 

//交集,set1有,set2也有的

sinter set1 set2

 

//并集,set1和set2元素的集合并去重

sunion set1 set2 

有序集合

redis有序集合和集合一样,也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double双精度浮点数类型的分数,redis正是通过该分数来为集合中的成员进行从小到大的排序,有序集合成员是唯一的,但分数却可以重复,集合是通过hash表实现的,所以添加,删除,查找的复杂度是O(1),集合中最大的成员数是2^32-1,每个集合可以存储40多亿成员

 

生成有序集合

//生成有序集合zset1 

zadd zset1 1 v1

 

//获取类型

type zset1

 

//一次添加多个元素

zadd zset2 1 v1 2 v2 3 v3

集合排行

image

 

//显示所有key,value

zrevrange zset2 0 -1 withscores

 

//显示集合zset2内所有的key

zrange zset2 0 -1

获取集合长度

zcard zset1

基于索引返回数值

//id号从1到3的

zrange zset1 1 3

返回某个数值的索引

zrank zset2 v2

哈希hash

hash是一个string类型的feild和value的映射表,hash特别是和用于存储对象,redis中每个hash可以存储40多亿键值对

 

生成hash key

//设置一个键值对,我这里设置两个的时候报错了,按理说不应该报错的,待观察

hset hash1 name liwenchao

 

type hash1

获取hash key字段值

//获取key为name的键值对的值

hget hash1 name

删除一个hash key的字段

hdel hash1 name

获取所有hash表中的key

hkeys hash1

获取指定hash的所有key,value

hgetall hash1

 

 

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

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

相关文章

【初识 Docker | 中级篇】 Docker 安装 MySQL

文章目录 前言一、安装 docker1、安装docker2、安装docker-compose 二、mysql 单机安装1.创建mysql配置1.1.创建目录1.2.创建docker-compose.yml 2.启动mysql容器 三、mysql 主从复制安装1.主服务器容器配置1.1.修改my.cnf配置文件1.2.重启容器实例,创建同步用户 2.…

【 TensorFlow】URLError: <urlopen error no host given> 错误的 有效的解决方法

URLError: 错误的 有效的解决方法😎 前言🙌错误运行截图:解决方案流程图:运行成功截图 总结撒花💞 😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!&a…

opencv_c++学习(二十六)

一、ORB特征点 ORB特征点计算步骤: Step1:选择某个像素点作为中心点P,其像素值为I。 Step2:设置判定FAST角点(其方法比较两个像素之间的差值)的像素阈值,例如 T p 20 % ∗ I p T_p 20\%*I_p Tp​20%∗Ip​ Step3:比较中心点的像素值与半径为3的圆周上…

传统加密技术(恺撒+仿射)

1.Caesar cipher恺撒密码 是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。 加密对象:英文字母 密钥格式:k&#…

哈希表、unordered_map和unordered_set模拟

目录 哈希表 闭散列 开散列 unordered_map和unordered_set模拟 对开散列的哈希表改造 unordered_set模拟 unordered_map模拟 哈希表 哈希概念:通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该…

当下的程序员该如何面对复杂的就业坏境

已经2023年了,我们都知道现在开发趋向于年轻化,大部分都是90后、95后,毕竟,软件开发不像硬件开发一样,年限越高,相对来说越吃香。 31岁,前端工程师,工作经历8年,7年左右都在外包公司…

LAMP架构(Apache、Mysql、PHP服务的部署)

目录 一、LAMP架构 1.LAMP组件 二、编译安装Apache httpd服务 1.关闭防火墙,拉取软件包 2.安装环境依赖包 3.配置软件模块 4.编译及安装 5.优化配置文件路径 6.添加httpd系统服务 7.修改httpd 服务配置文件 8.浏览器访问验证 三、编译安装mysqld服务 1.…

java.lang.IllegalStateException: Failed to load ApplicationContext

问题描述 mvn clean install的时候报的如下异常: 紧接着又往下翻了一下日志还有一个这个错误 按正常来说通过可以取pom当中的properties标签的值呀。但是可以发现编译过后的application当中的值并没有被替换。 解决过程 (1)我先是将server.…

1:400 万中国土壤数据介绍

一、土壤数据在科研以及日常生产生活中具有重要性价值。以下是其主要方面: 农业生产:土壤数据对于农业生产至关重要。通过了解土壤的物理、化学和生物学特性,农民可以合理管理土壤,选择适合的作物和肥料,调整灌溉和排水…

yolov8_track追踪加分割(yolo目标检测+追踪+分割)

**这个仓库包含了最先进的多目标追踪器。其中一些基于运动信息,另一些则基于运动和外观描述。对于后者,最先进的ReID模型也会自动下载。目前支持的模型有:DeepOCSORT LightMBN、BoTSORT LightMBN、StrongSORT LightMBN、OCSORT和ByteTrack。 我们提供了如何将这个包与流行的…

【轻量化网络系列(4)】ShuffleNetV1论文超详细解读(翻译 +学习笔记+代码实现)

前言 前面我们学了MobileNetV1-3,从这篇开始我们学习ShuffleNet系列。ShuffleNet是Face(旷视)在2017年发布的一个高效率可以运行在手机等移动设备的网络结构,论文发表在CVRP2018上。这个新的轻量级网络使用了两个新的操作&#…

软考A计划-试题模拟含答案解析-卷一

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

wait,notify,notifyAll,sleep,join等线程方法的全方位演练

一、概念解释 1. 进入阻塞: 有时我们想让一个线程或多个线程暂时去休息一下,可以使用 wait(),使线程进入到阻塞状态,等到后面用到它时,再使用notify()、notifyAll() 唤醒它,线程被唤醒后,会等…

网络规划与设计实验+配置案例报告+pkt

目录 第一部分:网络规划与设计实验..... 7 实验一 用户需求分析报告的撰写... 7 一、实验目的和要求... 7 二、实验内容... 7 三、实验步骤... 7 3.1 项目背景... 7 3.1.1 信息化发展趋势... 7 3.1.2 学校基本情况介绍... 8 3.1.3 学校对网络建设的基本要求…

Ovirt 开源虚拟化平台安装

ovirt官网 一、资源规划介绍 1.1、服务规划 ovirt版本 ovirt engine 4.3.10 ovirt node 4.3.10 ovirt.node01.opsvv.com 负责托管引擎服务 1.2、资源划分 1.2.1、节点划分 密码均为:12345678 Node02无法开启虚拟化,只演示加入集群节点使用 节点…

NodeJs服务链路追踪日志

(逆境给人宝贵的磨炼机会。仅有经得起环境考验的人,才能算是真正的强者。自古以来的伟人,大多是抱着不屈不挠的精神,从逆境中挣扎奋斗过来的。——松下幸之助) 服务链路追踪 服务的链路追踪指我们可以通过一个标记&am…

阿里云ECS部署Trojan代理

项目地址:GitHub - Jrohy/trojan: trojan多用户管理部署程序, 支持web页面管理 一、容器部署: docker run --name trojan-mariadb --restartalways -p 3306:3306 -v /home/mariadb:/var/lib/mysql -e MYSQL_ROOT_PASSWORDtrojan -e MYSQL_ROOT_HOST% -e…

在滴滴和字节跳动干了 2 年,太真实…

先简单交代一下背景吧,某不知名985的本硕,17年毕业加入滴滴,之后跳槽到了头条,一直从事软件测试相关的工作。之前没有实习经历,算是两年半的工作经验吧。 这两年半之间完成了一次晋升,换了一家公司&#x…

Linux 软件安装及vim详细用法和配置

文章目录 一、Linux下的软件1、什么是软件包?2、软件安装的三种方法3、yum 安装 lrzsz软件(windows和Linux消息互传)4、深入理解yum源 二、 L i n u x 编辑器 − v i m 使用 Linux编辑器-vim使用 Linux编辑器−vim使用1、vim三种模式作用及其…

递归之谜:解析无限嵌套的美

一、前言 嵌套是指在一个事物中包含另一个事物,而递归是一种特殊形式的嵌套,其中一个事物包含自身。 递归就是一种嵌套的形式,递归函数解决问题时嵌套调用自身。递归的核心思想是通过反复应用相同的过程来解决问题,每一次调用都…