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

【NoSql】Redis

Ubuntu22.04版本编译安装 Redis

Redis version=7.4.2

#解压源码包
tar -zxvf redis-stable.tar.gz
cd redis-stable/
make
make install

安装好了后,可执行文件默认会放入/usr/local/bin/

root@luobozi:~ ls /usr/local/bin/*
/usr/local/bin/redis-cli
/usr/local/bin/redis-benchmark  /usr/local/bin/redis-sentinel
/usr/local/bin/redis-check-aof  /usr/local/bin/redis-server
/usr/local/bin/redis-check-rdb

redis-cli
redis-server
redis-benchmark
redis-sentinel
redis-check-rdb
redis-check-aof

cp配置文件

cp ./redis-stable/redis.conf /etc/
bind 0.0.0.0redis-server /etc/redis/redis.conf

redis数据类型

  1. 字符串Strings
  2. 列表Lists
  3. 集合Sets
  4. 哈希Hashes
  5. 有序集合SortedSets
  6. 流Stream
  7. 地理空间Geospatial
  8. 基数统计HyperLogLog
  9. 位图Bitmap
# set 插入数据
192.168.100.30:6379> set key value [NX|XX] [GET] [EX seconds|PX milliseconds|EXAT unix-time-seconds|PXAT unix-time-milliseconds|KEEPTTL]

EX seconds:多少秒之后过期
PX milliseconds:多少毫秒之后过期
EXAT unix-time-seconds:指定时间戳过期(秒)
PXAT unix-time-milliseconds:指定时间戳过期(毫秒)
KEEPTTL:设置指定的生存时间

NX:键不存在时设置value值(key存在,不会修改值)
XX:键存在更新value值(默认)

字符串Strings

192.168.100.30:6379> set k2 bbb NX
OK
192.168.100.30:6379> set k2 ccc NX
(nil)
192.168.100.30:6379> set k2 ccc xx
OK
192.168.100.30:6379> get k2
"ccc"
192.168.100.30:6379> type k2
string
192.168.100.30:6379> del k2
(integer) 1
192.168.100.30:6379> get k2
(nil)

过期时间

# 设置10s后过期
192.168.100.30:6379> set time1 10s ex 10
OK
# 设置10000ms后过期
192.168.100.30:6379> set time1 10s px 10000
OK
# 时间戳后过期
192.168.100.30:6379> set time1 10s exat 1742027980
OK# 查看过期时间
192.168.100.30:6379> set time1 10s ex 100
OK
192.168.100.30:6379> ttl time1
(integer) 95

同时设置多个值

mset
msetnx

192.168.100.30:6379> mset k1 v1 k2 v2 k3 v3
OK
# 返回的顺序和key保持一致
192.168.100.30:6379> mget k1 k2
1) "v1"
2) "v2"
192.168.100.30:6379> mget k2 k1
1) "v2"
2) "v1"#  msetnx 键不存在时设置value值,只要key存在则命令整体会失败
192.168.100.30:6379> msetnx k1 v11 k4 v4
(integer) 0
192.168.100.30:6379> mget k1 k2 k3 k4
1) "v1"
2) "v2"
3) "v3"
4) (nil)

字符串操作

# 切片操作
192.168.100.30:6379> set k1 abcd12345678
OK
192.168.100.30:6379> get k1
"abcd12345678"
192.168.100.30:6379> getrange k1 0 4
"abcd1"
192.168.100.30:6379> getrange k1 0 -1
"abcd12345678"# 替换操作
192.168.100.30:6379> setrange k1 2 xxx
(integer) 12
192.168.100.30:6379> get k1
"abxxx2345678"# 默认不支持赋值等数学符号运算,可以通过下面的方式加减
192.168.100.30:6379> incr k1
(integer) 101
192.168.100.30:6379> incrby k1 5
(integer) 106
192.168.100.30:6379> get k1
"106"
192.168.100.30:6379> decr k1
(integer) 105
192.168.100.30:6379> decrby k1 5
(integer) 100#获取字符串长度
192.168.100.30:6379> strlen k1
(integer) 3
192.168.100.30:6379> get k1
"100"#追加数据到字符串末尾
192.168.100.30:6379> append k1 abc
(integer) 6
192.168.100.30:6379> get k1
"100abc"

列表

在redis中,列表的底层实现是双向链表,可以容纳40多亿个数据

192.168.100.30:6379> lpush lk1 1 2 3 4
(integer) 4
192.168.100.30:6379> lpush lk1 5
(integer) 5
192.168.100.30:6379> lrange lk1 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"#可以看到 push 顺序是从1 push 到5
--------------------------
lpush  ->  1 2 3 4 5
--------------------------
# 查看就是 5 4 3 2 1 
--------------------------
lrange  -> 5 4 3 2 1
--------------------------192.168.100.30:6379> lindex lk1 0
"5"
192.168.100.30:6379> lindex lk1 2
"3"
192.168.100.30:6379> llen lk1
(integer) 5
192.168.100.30:6379> rpush lk1  a b c d
(integer) 9
192.168.100.30:6379> lrange lk1 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
6) "a"
7) "b"
8) "c"
9) "d"
--------------------------1 2 3 4 5	a b c d	 <- rpush 
--------------------------# 拿走左边的数据(移除)
192.168.100.30:6379> lpop lk1
"5"
192.168.100.30:6379> lrange lk1 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "a"
6) "b"
7) "c"
8) "d"
# 拿走右边的数据
192.168.100.30:6379> rpop lk1
"d"
192.168.100.30:6379> lrange lk1 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "a"
6) "b"
7) "c"# 删除2个(如果有2个)指定的元素
192.168.100.30:6379> lrem lk1 2 a
(integer) 1
192.168.100.30:6379> lrange lk1 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "b"
6) "c"# 将一个列表的元素移动到另一个列表
192.168.100.30:6379> lpush lk2 1 2 3 4 5 6
(integer) 6
192.168.100.30:6379> lrange lk2 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
192.168.100.30:6379> lpush lk3 a b c d e f
(integer) 6
192.168.100.30:6379> lrange lk3 0 -1
1) "f"
2) "e"
3) "d"
4) "c"
5) "b"
6) "a"
192.168.100.30:6379> rpoplpush lk2 lk3
"1"
192.168.100.30:6379> lrange lk2 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
192.168.100.30:6379> lrange lk3 0 -1
1) "1"
2) "f"
3) "e"
4) "d"
5) "c"
6) "b"
7) "a"# 只保留指定的下标元素
192.168.100.30:6379> lrange lk3 0 -1
1) "1"
2) "f"
3) "e"
4) "d"
5) "c"
6) "b"
7) "a"
192.168.100.30:6379> LTRIM lk3 0 1
OK
192.168.100.30:6379> lrange lk3 0 -1
1) "1"
2) "f"# 修改指定下标的值
192.168.100.30:6379> lset lk3 0 Redis
OK
192.168.100.30:6379> lrange lk3 0 -1
1) "Redis"
2) "f"# 指定在哪个值前后插入数据
192.168.100.30:6379> linsert lk3 before Redis  hello
(integer) 3
192.168.100.30:6379> linsert lk3 after Redis world
(integer) 4
192.168.100.30:6379> lrange lk3 0 -1
1) "hello"
2) "Redis"
3) "world"
4) "f"

相关文章:

【NoSql】Redis

Ubuntu22.04版本编译安装 Redis Redis version7.4.2 #解压源码包 tar -zxvf redis-stable.tar.gz cd redis-stable/ make make install安装好了后&#xff0c;可执行文件默认会放入/usr/local/bin/ rootluobozi:~ ls /usr/local/bin/* /usr/local/bin/redis-cli /usr/local/…...

ClickHouse Docker 容器迁移指南:从测试环境到离线正式环境

ClickHouse Docker 容器迁移指南&#xff1a;从测试环境到离线正式环境 在实际开发和运维过程中&#xff0c;我们经常需要将测试环境中的服务迁移到正式环境&#xff0c;尤其是当正式环境处于离线状态时&#xff0c;这种迁移会变得更加复杂。本文将详细介绍如何将运行在 Docke…...

C# WPF编程-Menu

C# WPF编程-Menu 布局&#xff1a;代码&#xff1a;效果 在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;Menu控件用于创建下拉菜单或上下文菜单&#xff0c;它提供了丰富的定制选项来满足不同的应用需求。下面将介绍如何在WPF应用程序中使用Menu…...

利用Python爬虫获取Shopee(虾皮)商品详情:实战指南

在跨境电商领域&#xff0c;Shopee&#xff08;虾皮&#xff09;作为东南亚及台湾地区领先的电商平台&#xff0c;拥有海量的商品信息。无论是进行市场调研、数据分析&#xff0c;还是寻找热门商品&#xff0c;获取Shopee商品详情都是一项极具价值的任务。然而&#xff0c;手动…...

Docker和containerd之概览(Overview of Docker and Containerd)

Docker和containerd之概览 容器本质上就是一个进程。 Namespace是一种逻辑分组机制&#xff0c;允许您将集群资源划分为独立的虚拟环境。每个 Namespace 为资源提供了一个范围&#xff0c;使得不同的团队、应用程序或环境可以在同一集群中共存&#xff0c;而不会相互干扰。 C…...

【愚公系列】《高效使用DeepSeek》015-文献摘要生成

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...

【多线程】线程不安全问题

文章目录 多线程不安全的原因大的层面->多线程是随机调度的容易产生死锁 小的层面->内存不可见性引入volatile关键字 指令重排序不是原子性带来的隐患 synchronized锁的互斥性及作用可重入性——解决死锁 wait()和notify()两个突然迸发出的疑问 多线程不安全的原因 大的…...

为什么“连接断开可能导致锁未释放”

目录 两种典型场景可能导致锁未及时释放1. **数据库未及时检测到连接断开**2. **应用程序未正确处理事务** 为什么说“可能因连接断开导致死锁”&#xff1f;如何避免此类问题&#xff1f;总结 在大多数数据库实现中&#xff0c;如果持有锁的连接&#xff08;或会话&#xff09…...

【C++】树和二叉树的实现(下)

本篇博客给大家带来的是用C语言来实现数据结构树和二叉树的实现&#xff01; &#x1f41f;&#x1f41f;文章专栏&#xff1a;数据结构 &#x1f680;&#x1f680;若有问题评论区下讨论&#xff0c;我会及时回答 ❤❤欢迎大家点赞、收藏、分享&#xff01; 今日思想&#xff…...

注入绕过方法

目录 1.绕过 特定过滤 1.绕过空格过滤 2.绕过or&#xff0c;and等等过滤 3.绕过‌注释符过滤 4.绕过‌字段过滤 5. 单引号绕过‌ 6. 逗号绕过‌ 7. 等号与运算符绕过‌ 2.绕过 过滤方法 ‌1. 大小写统一过滤绕过‌ ‌2. 递归替换规则绕过‌ ‌3. 正则贪婪匹配绕过‌…...

kafka指北

为自己总结一下kafka指北&#xff0c;会持续更新。创作不易&#xff0c;转载请注明出处。 目录 集群controller选举过程broker启动流程 主题创建副本分布ISRleader副本选举机制LEO 生产数据流程同步发送和异步发送 分区策略ack应答生产者发送消息的幂等性跨分区幂等性问题&…...

Python基础语法全解析:从入门到实践

Python作为一门简洁高效、功能强大的编程语言&#xff0c;凭借其易读性和丰富的生态系统&#xff0c;已成为编程领域的“明星语言”。本文将系统讲解Python的核心语法&#xff0c;涵盖变量、数据类型、控制结构、函数、模块等核心概念&#xff0c;帮助读者快速掌握编程基础。 一…...

7、vue3做了什么

大佬认为有何优点&#xff1a; 组合式api----逻辑集中、对ts有更好的支持RFC–开放了一个讨论机制&#xff0c;可以看到每一个api的提案&#xff0c;方便源码维护&#xff0c;功能扩展&#xff0c;大家一起讨论 官方rfc响应式独立&#xff0c;new Proxy&#xff0c;天生自带来…...

OneCyber 平台

OneCyber 平台是一个专注于 网络安全 和 风险管理 的综合性解决方案平台。它旨在帮助企业和组织应对日益复杂的网络威胁&#xff0c;提供从威胁检测、风险评估到响应和恢复的全方位服务。以下是关于 OneCyber 平台的一些关键信息&#xff1a; 核心功能 威胁检测与分析&#xff…...

基于大语言模型与知识图谱的智能论文生成工具开发构想

基于大语言模型与知识图谱的智能论文生成工具开发构想 一、研究背景与意义 1.1 学术写作现状分析 #mermaid-svg-FNVHG5EiEgVSCpHK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-FNVHG5EiEgVSCpHK .error-icon{fil…...

JUC大揭秘:从ConcurrentHashMap到线程池,玩转Java并发编程!

目录 JUC实现类 ConcurrentHashMap 回顾HashMap ConcurrentHashMap CopyOnWriteArrayList 回顾ArrayList CopyOnWriteArrayList: CopyOnWriteArraySet 辅助类 CountDownLatch 线程池 线程池 线程池优点 ThreadPoolExecutor 构造器各个参数含义&#xff1a; 线程…...

4.3--入门知识扫盲,IPv4的头部报文解析,数据报分片,地址分类(包你看一遍全部记住)

IPv4协议&#xff1a;网络世界的快递包裹指南&#xff08;附拆箱说明书&#xff09; “IPv4就像一张明信片&#xff0c;既要写清楚地址&#xff0c;又要控制大小别超重” —— 某网络工程师的桌面铭牌 一、IPv4报头&#xff1a;快递面单的终极艺术 1.1 报头结构图&#xff08;…...

苍穹外卖-阿里云OSS使用

第一步&#xff1a; package com.sky.properties;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;Component ConfigurationProperties(prefix "sky.alioss") …...

SSL/TLS 和 SSH 区别

背景知识 对称加密算法 定义&#xff1a;对称加密算法是指加密和解密使用同一个密钥的加密方式。 加密过程&#xff1a;发送方用密钥加密数据&#xff0c;接收方用相同的密钥解密数据。 优点&#xff1a;对称加密算法通常比非对称加密算法更高效&#xff0c;适合处理大量数据…...

Vue生命周期_Vue生命周期钩子

一、生命周期介绍 每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比如设置好数据侦听&#xff0c;编译模板&#xff0c;挂载实例到 DOM&#xff0c;以及在数据改变时更新 DOM。 在此过程中&#xff0c;它也会运行被称为生命周期钩子的函数&#xff0c;让…...

数据库设计实验(4)—— 数据更新实验

一、目的与要求 掌握用SQL语句实现数据的插入、修改和删除。 二、实验准备 1. 建立一个商店的数据库store&#xff0c;记录顾客及其购物情况&#xff0c;由下面三个表组成&#xff1a; 商品&#xff08;商品号&#xff0c;商品名&#xff0c;单价&#xff0c;商品类别&#x…...

Apache DolphinScheduler:一个可视化大数据工作流调度平台

Apache DolphinScheduler&#xff08;海豚调度&#xff09;是一个分布式易扩展的可视化工作流任务调度开源系统&#xff0c;适用于企业级场景&#xff0c;提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。 Apache DolphinScheduler 旨在解决复杂的大数据…...

再学:call与delegatecall、call转账 Bank合约

目录 1.call与delegatecall 2.transfer && call 3.若想内部传递abi编码 4.Bank合约 1.call与delegatecall call&#xff1a;切换上下文 delegatecall&#xff1a;不切换上下文 delegatecall可以理解为 A在调用B这个集成在A的方法 可升级合约&#xff0c;常用del…...

关于解决新版本spring项目请求测试接口返回406的问题

目录 一、问题产生 二、问题排查 &#xff08;1&#xff09;首先是打断点debug进行排查 &#xff08;2&#xff09;网上查找相关资料排查 &#xff08;3&#xff09;老项目测试 三、问题解决 一、问题产生 使用Apifox对后端发送请求进行接口测试时返回状态码406&#xff0…...

linux入侵排查_应急响应

1.实验目标 掌握linux系统中信息收集的方法 掌握linux系统中持久化操作方法及排查方式 掌握linux系统入侵排查思路 2.实验步骤 1.统计攻击者爆破次数 2.排查攻击者第一次使用恶意用户登录的时间 3.检查sudoer文件 4.排查计划任务 5.排查计划任务 6.排查恶意服务 7.排查…...

AI视频生成产品体验分享(第2趴):Vidu、Hailuo、Runway、Pika谁更胜一筹?

hi&#xff0c;大家&#xff0c;继上次体验完可灵、即梦和pixverse&#xff0c;今天打算从产品经理的角度再研究下Vidu、Hailuo、Runway、Pika这几款产品&#xff01;欢迎加入讨论&#xff01; 一、产品简介 1. Vidu&#xff1a;国产自研的「一致性标杆」 &#x1f4cc;官网…...

R语言高效数据处理-自定义格式EXCEL数据输出

注&#xff1a;以下代码均为实际数据处理中的笔记摘录&#xff0c;所以很零散&#xff0c; 将就看吧&#xff0c;这一篇只是代表着我还在&#xff0c;所以可能用处不大&#xff0c;这一段时间都很煎熬&#xff01; 在实际数据处理中为了提升效率&#xff0c;将Excel报表交付给…...

JavaScript基础-获取元素

在Web开发中&#xff0c;使用JavaScript动态地访问和操作网页上的元素是一项基本技能。通过获取页面上的特定元素&#xff0c;我们可以对其进行各种操作&#xff0c;比如修改内容、样式或属性等。本文将详细介绍几种获取DOM元素的方法&#xff0c;并探讨它们的特点及适用场景。…...

基于srpingboot高校智慧校园教学管理服务平台的设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...

【小白向】Word|Word怎么给公式标号、调整公式字体和花括号对齐

【小白向】Word&#xff5c;Word怎么给公式标号、调整公式字体和花括号对齐 我的版本&#xff1a;Word 2021 如需快速查看关键步骤&#xff0c;请直接阅读标红部分。 如果遇到无法调整的情况&#xff0c;可以直接下载我的示例文档进行参考&#xff1a;花括号和其他的示例公式.…...