redis系列:01 数据类型及操作

redis的数据类型有哪些

string,list,set,sorted_set,hash
在这里插入图片描述

操作

sting:
set name maliao
get name
exists name
expire name 5
ttl name
del name
setex name 10 maliao 设置key和过期时间
setnx name maliao 当key不存在时才添加

list:
lpush letter a 
lpush letter b
lrange letter 0 -1:0表示从第0个元素开始获取,-1 表示获取到最后一个元素
rpush letter c
rpush letter d
rpush letter e f
lpop letter
rpop letter
lpop letter 2
llen letter
区间操作:
lpush score 100,99,60,50
ltrim score 1,3:修建,只保留[1:3]的元素

set:
sadd hero luna
sadd hero pa sa
sismember hero luna
srem hero luna

sorted_set:
由name -score 组成
zadd result 669 sjtu 680 pku 650 zju
zrange result 0 -1 
zrange result 0 -1 withscores:输出name和分数
zrank result zju:得到从小到大zju的排名
zrevrank result zju:得到从大到小zju的排名
zrank result 
zrevrank result 

hash:
hset person name laoyang
hset person age 50
hget person name
hgetall person
hdel person age
hexists person name
hkeys person
hlen person

flushall:慎用!删除redis所有key

几个数据结构的特点

string

  • string是动态字符串,可修改,最大长度为512M。
  • 通常采用加倍扩容预分配原则,减少内存的频繁分配:<1MB时每次扩容1MB,>1MB时翻倍扩容
  • string设置了过期时间后调用set修改,过期时间会失效。

list

  • list是连续的内存存储+双向链表,链表不是数组,增删的时间复杂度为O(1),索引定位时间复杂度为O(n)
  • 这样的结构满足快速增删,减少空间冗余。
  • list 常用来用作异步队列,实现队列、栈等结构。

hash

  • hash是无需字典,底层结构为数组+链表
  • hash字典的值只能是字符串
  • has字典采用渐进式rehash保证高性能,创建新表进行rehash,此时旧表可读,rehash完成后删除旧表。
  • hash字典可对用户结构中的每个字段单独存储,方便部分读取,避免全量获取造成的资源浪费。
  • 存储消耗hash>string,使用时要考虑成本
    在这里插入图片描述

zset 有序集合

  • zset为有序列表,可对value指定权重值score后进行排序
  • zset内部的结构为跳跃列表,为支持随机的增删,使用类似金字塔结构:底层元素串联,抽取代表值使用一级指针串联,抽取代表值使用二级指针串联······以此类推,最多32层。单个节点可能身兼多级职能。
  • 跳跃列表采取随机策略决定新元素的层级位置,层级概率主机减半:L0 100%,L1层50%,L2层25%······
    在这里插入图片描述

容器型数据结构的通用规则

  • list、set、hash、zset是容器型数据结构
  • 自动创建规则:如果容器不存在,redis会自动创建容器,再rpush进去新元素。
  • 自动释放规则: 如果容器内无元素,则立即删除容器,释放内存。
  • 过期策略:redis的过期时间是以对象为单位的,不是元素或属性,hash结构过期是整个hash对象过期,并非子key过期。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二极管选型怎么选?常用参数要熟练~

同学们大家好&#xff0c;今天我们继续学习杨欣的《电子设计从零开始》&#xff0c;这本书从基本原理出发&#xff0c;知识点遍及无线电通讯、仪器设计、三极管电路、集成电路、传感器、数字电路基础、单片机及应用实例&#xff0c;可以说是全面系统地介绍了电子设计所需的知识…

【LeetCode】206. 反转链表(简单)——代码随想录算法训练营Day01

题目链接&#xff1a;206. 反转链表 题目描述 206. 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1…

公司寄快递教程

公司寄快递用哪个更划算&#xff1f;这个问题有最优解吗&#xff1f;恐怕没有......很简单&#xff0c;回答这个问题之前&#xff0c;我们先来看看公司寄快递的背景。 一、大背景 所谓的大背景是由国内快递行业的发展现状所决定的。众所周知&#xff0c;这十年来&#xff0c;国…

Centos安装Datax

Centos7安装DataX 一、DataX简介二、DataX的数据源支持三、安装DataX1、下载DataX2、解压3、检验是否安装成功4、使用 四、实践案例1、环境信息2、编写同步的配置文件(user_info.json)3、执行同步4、验证同步结果 一、DataX简介 DataX 是阿里云 DataWorks数据集成 的开源版本&a…

Minitab的单因子方差分析的结果

单因子方差分析概述 当有一个类别因子和一个连续响应并且想要确定两个或多个组的总体均值是否存在差异时&#xff0c;可使用 单因子方差分析。如果经检验&#xff0c;发现至少有一组存在差异&#xff0c;请使用单因子方差分析中的比较对话框来标识存在显著差异的组对。 例如&…

C++ 之LeetCode刷题记录(九)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅&#xff0c;多学多练&#xff0c;尽力而为。 先易后难&#xff0c;先刷简单的。 58. 最后一个单词的长度 给你一个字符串 s&#xff0c;由若干…

代码随想录第第五十七天—回文子串,最长回文子序列

leetcode 647. 回文子串 题目链接&#xff1a;回文子串 版本一&#xff1a;动态规划 dp数组及下标的含义 dp[i][j]&#xff1a;区间范围[i, j] &#xff08;左闭右闭&#xff09;的子串是否是回文子串&#xff0c;如果是dp[i][j]为true&#xff0c;否则为false。确定递推公式…

Notepad++安装步骤

Notepad是一款文本编辑工具&#xff0c;支持27种编程语言&#xff0c;通吃C,C ,Java ,C#, XML, HTML, PHP,JS 等&#xff0c;该软件拥有完整的中文化接口及支持多国语言编写的功能&#xff0c;不仅可以用来制作一般的纯文字说明文件&#xff0c;还非常适合编写计算机程序代码&a…

大数据StarRocks(五) :数据类型

StarRocks 支持数据类型&#xff1a;数值类型、字符串类型、日期类型、半结构化类型、其他类型。您在建表时可以指定以下类型的列&#xff0c;向表中导入该类型的数据并查询数据。 5.1 数值类型 SMALLINT2 字节有符号整数&#xff0c;范围 [-32768, 32767] INT4 字节有符号整…

leetcode 动态规划(爬楼梯、零钱兑换、完全平方数)

70. 爬楼梯&#xff08;进阶版&#xff09; 卡码网&#xff1a;57. 爬楼梯(opens new window) 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 < m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正…

RedisTemplate使用zadd报错java.lang.StackOverflowError

代码当中使用RedisTemplate操作String、List都是正常的&#xff0c;但是操作zadd就会报错&#xff0c;有人说是这两个依赖的版本不一致的问题&#xff0c;但是项目中还有其他地方要用到&#xff0c;所以改版本号行不通&#xff0c; <dependency><groupId>org.redis…

DHCP与时间同步

目录 一、DHCP 1、DHCP定义 1.什么是DHCP 2.DHCP的好处 3.DHCP的分配方式 4.为什么使用DHCP 5.DHCP模式 2、DHCP的工作过程 3、DHCP动态配置主机地址 1.DHCP服务的优点 2.可分配的地址信息 3.动态分配IP地址 二、时间同步 1、ntp 2、chrony 1、搭建本地本地时间…

SpringSecurity入门demo(一)集成与默认认证

一、集成与默认认证&#xff1a; 1、说明&#xff1a;在引入 Spring Security 项目之后&#xff0c;没有进行任何相关的配置或编码的情况下&#xff0c;Spring Security 有一个默认的运行状态&#xff0c;要求在经过 HTTP 基本认证后才能访问对应的 URL 资源&#xff0c;其默认…

对于软件测试的认识和了解

对软件测试的认识&#xff1a; 软件测试要求开发人员避免测试自己开发的程序。从心理学角度讲&#xff0c;这是很有道理的。特别是一个相对复杂的系统&#xff0c;开发人员在刚刚开发完成的时候&#xff0c;尚沉浸于对自己设计的回味之中。此时去测试的话往往会侧重于程序本身的…

啥,凭什么Python中函数的返回值可以有多个?

你好&#xff0c;我是安然无虞。 文章目录 函数函数定义格式函数调用默认参数和变长参数默认参数变长参数 变量的作用域 函数 编程语言中的函数&#xff0c;是一段可以被重复使用的代码片段&#xff0c;使用函数能够减少冗余的代码。 函数定义格式 def 函数名(形参列表):函数…

JavaScript高级程序设计读书记录(十二):函数

函数是ECMAScript中最有意思的部分之一&#xff0c;这主要是因为函数实际上是对象。每个函数都是Function 类型的实例&#xff0c;而 Function 也有属性和方法&#xff0c;跟其他引用类型一样。因为函数是对象&#xff0c;所以函数名就是 指向函数对象的指针&#xff0c;而且不…

Python 解决安装三方包失败的问题

pip 安装三方包失败&#xff0c;常见的情况有三种&#xff1a;不能访问源所在服务器&#xff1b;Python 版本不支持&#xff1b;和本地版本冲突。 不能访问源服务器 对于这张问题&#xff0c;有两种解决方法 # 方法一 pip config set global.index-url <源服务器> pip…

文件操作(你真的会读写文件吗?)

文章目录 一、为什么使用文件&#xff1f;二、什么是文件&#xff1f;2.1 程序文件2.2 数据文件2.3 文件名 三、二进制文件和文本文件3.1 二进制文件3.2 文本文件 四、文件的打开和关闭4.1 流和标准流4.1.1 流4.1.2 标准流 4.2 文件指针4.3 fopen和fclose 五、文件的顺序读写5.…

多无人机集群智能flocking

matlab2020可运行 GitHub - pareshbhambhani/MultiAgent-Flocking-framework: This is part of the current research I am working on.

NX二次开发点通过云配准获取相同体

先找到体的参考方向&#xff08;这个参考方向对于相同体重合之后是相同的&#xff09;&#xff0c;这个时候我们的思路是三个不共线的点确定一个坐标系&#xff0c;然后和绝对方向求转换矩阵。然后获取体的所有边的几何中心&#xff0c;把这些点通过转换矩阵转换之后存起来&…