当前位置: 首页 > news >正文

redis初步认识(一)

文章目录

  • 概述
    • 安装编译
  • string数据结构
    • 基础命令
    • 应用
      • 对象存储
      • 累加器
  • list结构
    • 基础命令
    • 应用
      • 栈(先进后出FILO)
      • 队列
  • HASH
    • 基础命令
    • 存储结构
    • 应用
      • 存储对象
  • 小结

概述

redis 是一个远程字典服务;当然,redis是内存数据库,kv数据库,最基础的数据结构有(string, list, hash, set, zset)几种。

安装编译

在ubuntu云服务器上安装,有以下步骤:
git clone https://gitee.com/mirrors/redis.git -b 6.2
cd redis/
make
make test
sudo make install

string数据结构

字符数组,redis字符串是二进制安全字符串,可以存储图片等二进制数据;
内部实际存储根据string的数据特征可以采用int, embstr, raw存储。

基础命令

set key val
get key
执行原子加一的操作
incr key
incrby key increment
decr key
decrby key decrement

setnx key value
del key

应用

应用方面比较多,主要用于对象存储,累加器等。

对象存储

set role:100001  '{["name"]: "a", ["sex"]:"male", ["age"]:20}'
get role:100001
#这个格式比较固定,几乎都是如此存储的

累加器

#统计数量  累计加1
incr times
# 累计加到1000
incrby times 1000

list结构

对于list来说,它是一个首尾相连接的双向链表,链表首尾操作时间复杂度O(1);查找中间元素时间复杂度O(n);
列表中数据可能会被压缩:

  1. 元素长度小于48,不压缩;
  2. 元素压缩前后长度不超过8,不压缩;

基础命令

#左侧插入 左侧获取key
LPUSH key value
LPOP key#右侧插入 右侧获取key
RPUSH key value
RPOP keyLRANGE key start end
LREM key count value

应用

栈(先进后出FILO)

LPUSH + LPOP
# 或者
RPUSH + RPOP

队列

LPUSH + RPOP
#或者
RPUSH + LPOP

HASH

字典结构,通过hash函数(而不是通过比较key的方式)来确定节点的位置,hash这个数据结构不多介绍,可以参考我之前的文章。

基础命令

HGET key field
HSET key field valueHMSET key field1 value1 field2 value2
HMGET key field1 field2HINCRBY key field increment
HLEN keyHDEL key field

存储结构

当节点数量少的时候并且字符串长度小的时候,内部采用压缩列表存储,否则采用字典实现;

应用

存储对象

 hmset hash:10001 name a age 18 sex male# 与 string 比较
set hash:10001 '{["name"]:"a",["sex"]:"male",["age"]:18,["money"]:1000000}'# 假设现在修改 a的年龄为29岁
# hash:hset hash:10001 age 29# string: get role:10001# 将得到的字符串调用json.decode解密,取出字段,修改 age 值# 再调用json加密set role:10001 '{["name"]:"a",["sex"]:"male",["age"]:29}

小结

当然了,redis是一个内存数据库,存储在内存当中;如果遇到服务器宕机,这些数据就不存在了,所以有些数据需要配合mysql数据库一起使用。这篇写的是redis的基础部分,数据结构也写了几个,感觉还好,可以一起来学习学习。OK,翻篇。

相关文章:

redis初步认识(一)

文章目录 概述安装编译 string数据结构基础命令应用对象存储累加器 list结构基础命令应用栈(先进后出FILO)队列 HASH基础命令存储结构应用存储对象 小结 概述 redis 是一个远程字典服务;当然,redis是内存数据库,kv数据库,最基础的…...

Android 开发必备知识点及面试题汇总(Android+Java+算法+性能优化+四大组件……

**虚引用:**顾名思义,就是形同虚设,如果一个对象仅持有虚引用,那么它相当于没有引用,在任何时候都可能被垃圾回收器回收。 7.介绍垃圾回收机制 **标记回收法:**遍历对象图并且记录可到达的对象&#xff0c…...

安装Cmakeffmpeglibssh

首先安装cmake: sudo apt install cmake cmake --version然后这个输出正常就装好了 然后安装ffmpeg: tar xvzf n4.4.tar.gz cd FFmpeg-n4.4 chmod x configure ./configure --enable-gpl --enable-nonfree --enable-libx264 --enable-debug --disable-opti…...

计算机网络实验(9):路由器的基本配置和单臂路由配置

一、 实验名称 路由器的基本配置和单臂路由配置 二、实验目的: (1)路由器的基本配置: 掌握路由器几种常用配置方法; 掌握采用Console线缆配置路由器的方法; 掌握采用Telnet方式配置路由器的方法&#…...

ArcGIS与Excel分区汇总统计三调各地类面积!数据透视表与汇总统计!

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 01 需求说明 介绍一下ArcGIS与Excel统计分区各地类的三调地类面积。 ArcGIS统计分析不会&#x…...

QML 中宽度、高度与隐式宽度/高度的区别及其应用场景

在 QML 中,width、height 与 implicitWidth、implicitHeight 这几个属性常常令开发者感到困惑。本文将详细介绍它们之间的区别,并说明在何种情况下应使用隐式尺寸以及普通尺寸。 基本定义 width 和 height:表示组件/item 的实际尺寸。impli…...

如何利用AopContext.currentProxy()解决事务管理中的方法调用问题

在Spring应用开发中,使用AOP(面向切面编程)来管理事务是非常常见的做法。然而,在某些场景下,尤其是在同一个类的方法内部,一个非事务方法直接调用另一个带有事务注解的方法时,可能会遇到事务不生…...

VMware虚拟机下载安装Windows Server 2016

「作者简介」:2022年北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等…...

springboot vue 开源 会员收银系统 (7) 收银台的完善 新增开卡 结算

前言 完整版演示 开发版演示 在前面的开发中,我们成功完成了商品分类和商品信息的搭建,开发了收银台基础。现在,我们将进一步完善收银台的功能,添加开卡和结算功能,并在后台实现会员卡的创建和订单保存。同时&#xff…...

虚拟现实环境下的远程教育和智能评估系统(十三)

管理/教师端前端工作汇总education-admin: 首先是登录注册页面的展示 管理员 首页 管理员登录后的首页如下图所示 管理员拥有所有的权限 课程管理 1、可以查看、修改、增添、删除课程列表内容 2、可以对课程资源进行操作 3、可以对课程的类别信息进行管理&…...

深入了解软件设计模式:创新应用与优化代码结构

前言 在软件开发中,设计模式被广泛应用,通常分为三大类:创建型、结构型和行为型。这些模式经过时间验证,在解决特定问题和优化代码结构方面发挥了重要作用。本文将详细介绍每一类设计模式,并通过具体实例展示它们的应…...

android studio 模拟器文件查找

android studio 模拟器文件查找 使用安卓模拟器下载文件后通常无法在系统硬盘上找到下载的文件,安卓 studio studio 其实提供了文件浏览工具,找到后可以直接使用 Android studio 打开 打开 Android studioview 菜单view > Tool Windows > Device…...

【科普】半导体制造过程的步骤、技术、流程

在这篇文章中,我们将学习基本的半导体制造过程。为了将晶圆转化为半导体芯片,它需要经历一系列复杂的制造过程,包括氧化、光刻、刻蚀、沉积、离子注入、金属布线、电气检测和封装等。 基本的半导体制造过程 1.晶圆(Wafer&#xf…...

c89、c99、c11

C99 标准开始引入了 // 单行注释。在此之前,C语言只支持 /* ... */ 多行注释。 具体说明: // 单行注释:在C99标准(ISO/IEC 9899:1999)引入之前,C语言中没有单行注释。C99标准借鉴了C的注释风格&#xff0…...

【网络安全的神秘世界】已解决burpsuite报错Failed to start proxy service on 127.0.0.1:8080

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 解决burpsuite无法在 127.0.0.1:8080 上启动代理服务端口被占用以及抓不到本地包的问题 Burpsuite无法启动proxy…...

【C#】使用数字和时间方法ToString()格式化输出字符串显示

在C#编程项目开发中,几乎所有对象都有格式化字符串方法,其中常见的是数字和时间的格式化输出多少不一样,按实际需要而定吧,现记录如下,以后会用得上。 文章目录 数字格式化时间格式化 数字格式化 例如,保留…...

Mac系统主机名变为bogon的解决方案

如题 在使用Mac操作系统时,您可能会遇到一个有趣且略显困扰的问题:终端中显示的主机名突然变成了“bogon”。这不仅让人困惑,还可能给日常操作带来不便。本文旨在提供一种简便的解决方法,帮助您将主机名恢复为正常状态。 什么是…...

行列式和矩阵的区别

目录 一、行列式 1. 行列式的定义 2. (全)排列 3. 逆序数 二、矩阵 1. 矩阵的定义 三、行列式和矩阵的区别 四、参考书目 一、行列式 1. 行列式的定义 2. (全)排列 3. 逆序数 二、矩阵 1. 矩阵的定义 三、行列式和矩阵的区别 四、参考书目 同济大学数学系. 工程数学…...

MATLAB复习

MATLAB常用的标点符号 空格 变量分隔符 矩阵一行中各元素间的分隔符 程序语句关键词分隔符 逗号,分隔显示计算结果的各语句 变量分隔符 矩阵中一行各元素的分隔符点号.数值中的小数点 结构数组的域访问符分号;分隔不想显示计算结果的各语句 矩阵行与行的…...

Android11 动态权限申请

1、单个权限检查及申请 private void checkSinglePermission(){// 在需要的地方,如Activity中if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)! PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this,…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

Android写一个捕获全局异常的工具类

项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...

6.9-QT模拟计算器

源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...