Redis安装及常用数据类型介绍

news2024/11/19 20:27:08

1、redis介绍


  • 1.1、redis是一个开源的key-value存储系统

  • 1.2、和Memcached类似,它支持存储的value类型相对很多,包括String、list、set、zset以及hash类型。

  • 1.3、这些数据类型都支持push/pop、add/remove及取交集并集及更丰富的操作,而且这些操作都是原子性的

  • 1.4、redis支持各种不同方式的的排序

  • 1.5、数据存储在内存中

  • 1.6、redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件

  • 1.7、实现master-slave(主从)同步

2、redis安装


  • 2.1、下载redislinux安装包

  • 2.2、 解压文件

  • 2.3、进入该目录下进行编译、安装

     cd redis-7.1.1 
     make
     make install
  • 2.4、运行

  • 进入/usr/local/bin目录下

  • 修改redis.conf 配置后台启动开启 daemonize no 改称 yes

  • redis-server /redis.conf (后台运行)

3、常用数据类型


  • 3.1、String

  • tring是Redis最基本的类型,且时二进制安全,意味着Redis的String可以包含任何数据(对象需要序列化)

  • String类型时Redis最基本的数据类型,一个Redis中字符串value最多可以时512M。

  • 常用命令

1、 set key value
set k1 v100
set k2 v101
2、 get key 查询对应键值
3、 append key value 将给定的value追加到原值的末尾
4、 strlen key 获得值的长度
5、 setnx key value 只有在key不存在时 设置key的值
6、 incr key 将key中存储的数字值加1 如果为空 1
7、 decr key 将key中存储的数字值减1 如果为空 -1
8、 incrby/decrby key 步长 将key中存储的数字值增减
9、 mset key value key2 value2 key3 value3 对多个key value进行赋值
10、mget key key1 key3 等 同时获取一个或者多个key对应的值
11、msetnx key value key1 value1 同时设置一个或者多个 key-value时,当且今当所有的key都不存在时
12、getrange key startindex endindex 获得值的范围,类似java 的substring
13、setrange key startIndex endindex 设置key对应的value对应的值
14、setex key 过期时间 value 设置键值的同时,设置过期的时间,单位是秒
15、getset key value 获取到旧值,但是已经更新了 value
  • 原子操作,这里的原子操作将不会被远程调度机制所打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何的context switch (切换到另一个现程)

1、在单线程中,能够在单条指令中完成的操作都可以认为是原子操作,因为中断值发生在指令之间。
2、在多线程中,不能被其他线程打断的操作就叫做原子操作
3、String的数据结构为简单动态字符串,是可以修改的字符串,内部结构类似为java的arrayList,采用预分配冗余空间的方式来减少内存的频繁分配
  • 3.2、列表 list

  • 单键多值

1、Redis列表是简单的字符串列表,按照插入顺序排序,它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差
  • 常见命令

1、lpush/rpush key value1 value2 value3… 从左/右插入一个或者多个值。
2、lpop/rpop key 从左/右边吐出一个值 值在键在,值光键亡。
3、rpoplpush key1 key2 从key1列表右边吐出一个值,插到key2列表中的左边
4、lrang key start stop 按照索引下标获得元素(从左到右) 0 -1 取出所有的数据
5、lindex key index 按照索引下标获得元素(从左到右)
6、llen key 获得列表长度
7、linsert key before value newvalue 在value后面插入newvalue插入值
8、lrem key n value 从左边删除n个value(从左到右)
9、lset key index value 将列表key下标为index的值替换成value
  • List的数据结构为快速链表 quickList

  • 3.3、 set

  • Redis set 对外提供的功能与list类是,是一个列表的功能,特殊之处在于set是可以自动去重,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择。

  • 常见命令

1、sadd key value value2 将一个或多个member元素加入到集合key中,已经存在的member元素将被忽略
2、smembers key 取出该集合的所有值
3、sismember key value 判断集合key 是否含有value ,有1 ,没有 0
4、 scard key 返回该集合的元素个数
5、srem key value value2… 删除集合中的某个元素
6、spop key 随机从集合中吐出一个值
7、srandmember key n 随即从该集合中取出n个值,不会从集合中删除。
8、smove source destination value 把结合中一个值从一个集合移动到另一个集合中
9、sinter key1 key2 返回两个集合的交集元素
10、sinter key1 key2 返回两个集合的并集元素
11、sunion key1 key2 返回两个集合的并集元素
12、sdiff key key1 返回两个集合中的差集元素,key中 不包含 key1中的
  • 数据结构

1、set 数据结构是dict字典,字典是用哈希表来实现的。Java 中HashSet的内部实现使用的是HashMap,只不过所有的value都指向同一个对象。Redis的set结构也是一样,它的内部也是使用hash结构,所有的value都指向同一个内部值。
  • 3.4、 Redis 哈希(Hash)

  • Redis hash是一个键值对集合,是一个string类型的field和value的映射表,hash特别适合用于存储对象。类是Java中的Map<String,Object>

  • 常用命令

1、hset key field value 给key集合中的 field值赋为value
2、hget key field 从key 集合field取出value
3、hmset key field value field1 value1…批量设置hash的值
4、hexists key field 查看哈希表key中,给定域field是否存在
5、hvals key 列出该hash集合的所有的value
6、hkeys key列出该hash集合的所有的field
7、hincrby key field increment 为哈希表key中的域field 的值加上增量 1 -1
8、hsetnx key field value 将哈希表key中的域field的值设置为value,当且仅当域field不存在时。
  • 数据结构

1、Hash类型对应的数据结构是两种:ziplist(压缩类表),hashtable(哈希表)。当field-value 长度较短且个数较少时,使用ziplist,否则使用hashtable。
  • 3.5、 Redis 有序集合 Zset(sorted set)

  • Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分,这个评分被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是为一的,但是评分可以是重复的,因为元素是有序的。所以可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。

  • 常用命令

1、zadd key score1 value1 score2 value2…将一个或多个member 元素及其score值加入到有序集合key当中
2、zrange key start stop withscores 返回有序集合key中,下标为 start、stop 之间的元素
3、带withscores,可以让分数一起和值返回到结果集
4、zrangebyscore key minmax withscores limit offset count 返回有序集合key中,所有score值介于min 和 max之间(都是闭合区间)的成员,有序集合成员按score值递增 排列
5、zrem key value 删除该集合下,指定值的元素
6、zincrby key increment value 为元素的score 加上增量
7、zrevrangebyscore key maxmin withscores limit offset count
参考: Redis连接

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

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

相关文章

LeetCode[264]丑数II

难度&#xff1a;中等题目&#xff1a;给你一个整数 n&#xff0c;请你找出并返回第 n个 丑数 。丑数 就是只包含质因数 2、3和/或 5的正整数。示例 1&#xff1a;输入&#xff1a;n 10输出&#xff1a;12解释&#xff1a;[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组…

【NKOJ三校 初中新年大联欢DIV2】考试游记

目录 看不见的手ljj的方块零它来了宝石转换ljj的距离零它走了彩蛋 题目 【A NKOJ-P8629】 看不见的手 40pts 考试思路&#xff1a; 这道题一看数据范围就知道是O(n)O(n)O(n)的结论题&#xff0c;考试的时候脑子抽筋偏分输出1得了40pts&#xff1b; 正解&#xff1a; 他说…

VISTA -MIT开源基于数据驱动的自动驾驶仿真引擎

引言 VISTA 是MIT开源的一个基于数据驱动的用于自动驾驶感知和控制的仿真引擎。VISTA API提供了一个接口&#xff0c;用于将真实世界的数据集转换为具有dynamic agents、sensor suites、task objectives的虚拟环境。 用过 Unreal Engine 或者 Gazebo的仿真引擎的同学都知道&…

【Kafka】八股文梳理

什么是消息中间件&#xff1f; 消息中间件是基于队列与消息传递技术&#xff0c;在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统。 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流&#xff0c;并基于数据通信来进行分布式系统的集成。…

Android Native开发系列之C/C++代码调试

Android Native开发系列之C/C代码调试 引言 在做Android native层开发的时候&#xff0c;需要经常调试C/C代码&#xff0c;相较而言通过打日志的方式太不方便了。有两种方式可以进行底层代码的调试。 利用Android studio自带的Debugger进行调试。利用LLDB VSCode进行代码调试…

SAP灵活工作流条件增强

前置 灵活工作流模板中可以设置条件&#xff0c;用来在场景配置中判断是否启动流程或者是否执行该节点 除了流程模板中设置&#xff0c;也可以通过增强设置更为灵活的条件判断,对应增强点SWF_PROCESS_WORKFLOW_CONDITION 增强实施步骤参考 创建增强点实施 复制示例类 为增强设…

深入聊一聊vue3中的reactive()

在vue3的开发中&#xff0c;reactive是提供实现响应式数据的方法。日常开发这个是使用频率很高的api。这篇文章笔者就来探索其内部运行机制。小白一枚&#xff0c;写得不好请多多见谅。 调试版本为3.2.45 什么是reactive? reactive是Vue3中提供实现响应式数据的方法. 在Vue2中…

【Dash搭建可视化网站】项目9:智能选股器(结合行业、换手率、量比与60日k线图选择目标股票)制作步骤详解

【Dash搭建可视化网站】项目9&#xff1a;智能选股器&#xff08;结合行业、换手率、量比与60日k线图选择目标股票&#xff09;1 项目效果图2 项目架构3 文件介绍和功能完善3.1 assets文件夹介绍3.2 app.py和index.py文件完善3.3 layoutleft.py文件完善3.4 api.py和api.ipynb文…

【数据结构趣味多】栈和队列(详细解析)

目录 1.1 栈的定义 1.2 栈的模拟实现&#xff08;顺序栈&#xff09; push()方法 pop()方法 peek()方法 size()方法 栈模拟实现的全代码 1.3顺序栈和链栈的对比 2.队列 2.1队列的定义 2.1队列的模拟实现&#xff08;单链表&#xff09; offer()函数 poll()函数 p…

ABB AC500 PLC 与西门子 S7-300 CPU DP 通讯

硬件连接 将一个 AC500 CPU&#xff08;本例 PM583&#xff09; 左侧插入以 DP 通讯扩展模块 CM572&#xff0c;使用 DP 通讯电缆连接 CM572 与 314-2DP CPU 的 DP 通讯口。连接示意图如下&#xff1a; AC500 DP 主站配置 安装 DP 从站设备描述文件 从西门子官方网站下载 CP…

认识二叉树

hi&#xff0c;代噶候。今天带大家认识一下二叉树&#xff0c;这个二叉树在我看来确实很有难度&#xff0c;但是不要怕&#xff0c;&#xff0c;鲁迅先生曾经说过&#xff0c;真正的勇士敢于面对惨淡的人生&#xff0c;敢于正视淋漓 的鲜血&#xff0c;下面让我们开始吧&#x…

线程池的内部结构与原理解析

线程池的内部结构 使⽤线程池的原因&#xff1a; 1、降低资源消耗 2、控制并发的数量。并发数量过多&#xff0c;可能会导致资源消耗过多&#xff0c;从⽽造成服务器崩溃 3、提高线程的可管理性 1、线程是稀缺资源&#xff0c;如果无限制地创建&#xff0c;不仅会消耗系统资源&…

Global Illumination_SDF Generate Visualize Shadow

Signed Distance Field(有向距离场)&#xff0c;简称SDF&#xff0c;这其实是图形学中非常常用的数学概念。数学上来说&#xff0c;是定义在空间中的一个标量场&#xff0c;标量值为空间一点到曲面的距离。曲面外的点为正值&#xff0c;曲面上的点为0&#xff0c;曲面内的点为负…

通用vue组件化展示列表数据

一、数据的简单展示 1.首先先确定要展示的表格列名以及拿到所需要展示的数组数据 2.然后建立一个专门放el-table遍历的文件 3.在父组件中将数据列表数据存放在listData里面&#xff0c;然后传给子组件&#xff0c;子组件定义一个动态的列&#xff0c;通过遍历propList得到列名…

SpringCloud从入门到精通(八)

config config-概述 • Spring Cloud Config 解决了在分布式场景下多环境配置文件的管理和维护。 • 好处&#xff1a; 集中管理配置文件 不同环境不同配置&#xff0c;动态化的配置更新 配置信息改变时&#xff0c;不需要重启即可更新配置信息到服务config-快速入门 gitee搭…

一文告别结合Nacos后,Springboot的配置文件看不懂的痛苦

一、背景 后端基于SpringCloud项目架构的话&#xff0c;默认会使用Nacos来做配置中心&#xff0c;但是这对从来没接触过Nacos配置中心的小伙伴&#xff0c;肯定就不知道怎么回事了&#xff0c;于是便有了这一篇指引。 二、Nacos配置中心是如何引入SpringCloud项目中的呢&…

操作系统实验8:proc文件的实现

实验目的 掌握虚拟文件系统的实现原理实践文件、目录、索引节点等概念 实验内容 在Linux 0.11上实现procfs&#xff08;proc文件系统&#xff09;内的psinfo结点。当读取此结点的内容时&#xff0c;可得到系统当前所有进程的状态信息。例如&#xff0c;用cat命令显示/proc/p…

有限状态机

文章目录1.概念2.什么是计算3.什么是有限状态机3.1特性3.2为什么要用状态机4.实战4.1字符串转换整数4.2用有限状态机实现4.3源码1.概念 有限状态机&#xff08;英语&#xff1a;finite-state machine&#xff0c;缩写&#xff1a;FSM&#xff09;又称有限状态自动机&#xff0…

【手写 Vue2.x 源码】第十篇 - 数组数据变化的观测情况

一&#xff0c;前言 上篇&#xff0c;主要介绍了对象数据变化的观测情况&#xff0c;涉及以下几个点&#xff1a; 实现了对象老属性值变更为对象、数组时的深层观测处理&#xff1b; 结合实现原理&#xff0c;说明了对象新增属性不能被观测的原因&#xff0c;及如何实现数据…

综合案例二 旅游网【1.项目导入技术选型注册表单校验登录退出表单】注册表空指针异常和其他一些错误

目录 前提&#xff1a;项目导入 在maven中点击travel项目&#xff08;这里我是将项目添加到hello_maven里 &#xff09; 1.启动项目 方式一&#xff1a;maven命令启动 方式二&#xff1a;配置maven快捷启动 2.技术选型 1 Web层 2 Service层 3 Dao层 3.创建数据库…