【NoSql】Redis

server/2025/3/16 8:26:41/

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_37">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"

http://www.ppmy.cn/server/175368.html

相关文章

C++程序设计语言笔记——抽象机制:模板

0 使用模板表示用于很多实参类型的算法。 在 C 中&#xff0c;使用函数模板或类模板可以创建适用于多种数据类型的通用算法。以下是一个详细说明和示例&#xff1a; 基本模板函数示例 template <typename T> T max(T a, T b) {return (a > b) ? a : b; }// 使用示…

高级java每日一道面试题-2025年2月18日-数据库篇-MySQL 如何做到高可用方案?

如果有遗漏,评论区告诉我进行补充 面试官: MySQL 如何做到高可用方案? 我回答: 在Java高级面试中&#xff0c;讨论MySQL如何实现高可用性方案是一个重要话题。这不仅涉及到数据库的稳定性和可靠性&#xff0c;还关系到系统的整体性能和用户体验。以下是结合提供的信息进行综…

css模拟雷达扫描动画

<div class"radar-scan"><div class"radar-container" /></div> 样式&#xff1a; .radar-scan {background-image: linear-gradient(0deg,transparent 24%,rgba(32, 255, 77, 0.15) 25%,rgba(32, 255, 77, 0.15) 26%,transparent 27%,…

TDengine 使用教程:从入门到实践

TDengine 是一款专为物联网&#xff08;IoT&#xff09;和大数据实时分析设计的时序数据库。它能够高效地处理海量的时序数据&#xff0c;并提供低延迟、高吞吐量的性能表现。在本文中&#xff0c;我们将带领大家从 TDengine 的安装、基本操作到一些高级功能&#xff0c;帮助你…

WPS的Excel文档如何利用VB脚本批量替换超链接的内容

准备知识 关于WPS的Excel点击单元格打开别的文档的两种方法的探究【为单元格添加超链接】 https://blog.csdn.net/wenhao_ir/article/details/146212767 激活WPS的Excel文档中的VB编辑器功能 没有激活前的截图如下: 原因是我们的电脑中缺乏VBA插件,我们点击“开发工具”:…

如何搭建一个适配微信小程序,h5,app的uni-app项目

在vscode搭建 uni-app 项目&#xff08;Vue 3 Vite Pinia uView Plus&#xff09; 一、环境准备 1. 安装 Node.js 确保已安装 Node.js&#xff08;需≥14版本&#xff09;&#xff0c;可通过以下命令检查版本&#xff1a; node -v2. 安装 VSCode 从 VSCode 官网 下载并…

Python学习第十七天

Django框架-SQLite3 介绍 Django内置了对 SQLite3 数据库的支持。SQLite3 是一个轻量级的嵌入式数据库引擎&#xff0c;非常适合开发、测试和小型项目。以下是关于 Django 中 SQLite3 的介绍和应用指南。&#xff08;除了这些还支持mysql、oracle以及其他查询文档&#xff0c;…

python 入门教程 window 10 环境下安装pyenv

python的环境配置方法很多&#xff0c;由于python有两个大版本&#xff0c;很多时候需要切换某个固定的版本才能运行三方包&#xff0c;所以推荐使用pyenv 配置python 环境变量 pyenv 的安装 安装方法&#xff1a; Invoke-WebRequest -UseBasicParsing -Uri "https://r…