Redis 缓存中间件

news2025/1/11 18:38:21

目录

概念

安装redis

redis基本命令

给redis添加密码

基础数据类型

string类型

list列表类型

set创建(一个键对应一个值)

set 创建数据

get 获取数据

keys * 展示所有的键

exists 判断键值是否存在

type 查看数据的类型

del 删除键

rename 修改键的名字

append 追加

strlen 统计值有多少字符

incr 自增一

decr 自减一

指定值增减

setex 设置键的生命周期

ttl 查看剩余生命周期

dbsize 查看共有多少键

config get databases 查看一共有多少库

select 切换库

move 备份

flushdb 清空库

mset 同时创建多个键值

mget 同时查看多个键值

lpush 创建(一个键多个值)

lpush 倒序创建多个值 

lrange 展示所有键的值(倒序)

lpop 删除多个值中的一个(从右往左删)

llen 查看键有多少个值

lrem 删除指定的值

lindex 查看指定的值

lset 替换

linsert 指定位置添加值

rpush 创建多个值(正序)

rpop 删除值(从左往右)

hash类型

hset 创建数据

hget 获取数据

hlen 查看有多少个对象

hdel 删除对象

hmget 获取多个对象的值

hgetall 获取所有的值

hkeys 展示对象

hvals 查看对象的值

hsetnx 添加数据

set 无序集合

zese 有序集合 

总结


常用中间件

nginx 是web服务的中间件

php是nginx和数据库之间的中间件,用于转发动态请求

tomcat既是web页面的中间件,也可以转发动态请求

redis是数据库的缓存中间件,用来缓存数据库

目前主流用的是springboot,它自带tomcat

概念

redis 也是一个数据库,不单单是一个缓存工具。

它是非关系型数据库(nosql)。特点是键值对形式。数据的类型不是定义好的类型。

redis叫远程字典服务器,是开源的。redis基于内存运行,所有的数据不是保存在硬盘,而是内存。它具有持久化,定期或者人为的把数据保存到硬盘。

redis的优点

1.极高的读写速度,读速度可以达到11万次/s,写速度可以达到8.1万次/s

2.支持丰富的数据类型,键值对可以定义多种数据类型(string list hash set)

3.支持数据持久化,能把内存当中数据保存到磁盘

4.原子性,redis所有操作都是原子性

5.支持主从模式和高可用模式(哨兵模式),以及集群

redis基于内存运行的数据库,缓存是最常用应用的场景。其他场景:排行榜、计数器、存储关系、实时分析记录、日志系统都用redis。

redis的数据流向

缓存的概念

缓存是一种用于存储临时数据副本的技术,目的就是提高访问速度和性能

缓存通常位于数据的访问路径上,数据的必经之路。可以在不直接访问原始数据的情况下,可以直接获取数据。

缓存的应用场景

web缓存、数据库缓存、对象缓存(大数据应用)

安装redis

1.yum install -y gcc gcc-c++ make

2.tar -xf redis-5.0.7.tar.gz

3.cd redis-5.0.7/

  make -j 4

  make PREFIX=/usr/local/redis install

4.cd utils/

  ./install_server.sh

一路回车到path [ ] 在这里输入 /usr/local/redis/bin/redis-server  然后在回车

5.ln -s /usr/local/redis/bin/* /usr/local/bin/

netstat -antp | grep 6379   查看端口是否启动

6.vim /etc/redis/6379.conf

70行添加本机ip

7.   /etc/init.d/redis_6379 restart  重启redis

8.redis-cli -h 192.168.233.10 -p 6379 进入redis

redis基本命令

 /etc/init.d/redis_6379 restart  重启redis

tail -f /var/log/redis_6379.log  查看redis日志

redis-cli -h 192.168.233.10 -p 6379 进入redis

-h 指定ip地址

-p 指定端口

-a 密码(没有密码可以不加)

redis-cli 命令行工具

redis-server  start/stop/restart  控制redis

redis-benckmark 检测redis在本机的运行效率

redis-check-aof  修复aof持久化的文件

redis-check-rdb 修复rdb持久化的文件

redis-benchmark -h 192.168.233.10 -p 6379 -c 100 -n 100000

向redis的主机模拟发送100个并发链接,同时发送十万个请求测试

redis-benchmark -h 192.168.233.10 -p 6379 -q -d 100

模拟存储100个数据和性能测试

给redis添加密码

config set requirepass 123456

基础数据类型

string 字符串

list   列表

hash  散列,键值对集合

set  集合,不重复的无序集合

zset  集合,有序集合

string类型

是redis的基础类型,最大能够存储512MB 的数据

数字和图片等等都是默认string类型

list列表类型

set创建(一个键对应一个值)

set 创建数据

set test 10

test是键,10是值

如果已有值,再创建会修改这个值的数据

get 获取数据

get test

keys * 展示所有的键

keys test 展示指定的键

exists 判断键值是否存在

exists  test 

返回值是1,表示存在

返回值是0,表示不存在

type 查看数据的类型

type test

del 删除键

del test

rename 修改键的名字

rename test txt

append 追加

strlen 统计值有多少字符

strlen test

incr 自增一

incr test

decr 自减一

decr mykey

指定值增减

incrby mykey 10 指定增加10

decrby mykey 10 指定减少10

setex 设置键的生命周期

setex mykey 15 hello

ttl 查看剩余生命周期

ttl mykey

dbsize 查看共有多少键
config get databases 查看一共有多少库

默认就是16个库

select 切换库

select 0切换到第一个库

每个库都是独立的,互不影响 

move 备份

move mykey 1 把mykey键复制并迁移到库1

flushdb 清空库

flushdb 清空当前库

flushall 清空所有库

mset 同时创建多个键值

mset test1 1 test2 2

mget 同时查看多个键值

mget test1 test2 test3

lpush 创建(一个键多个值)

lpush 倒序创建多个值 

lpush mykey a b c d

lpushx mykey e 添加一个值e

lpush和set的区别:

set创建的键是一个键对应一个值

lpush创建的键可以对应多个值

lrange 展示所有键的值(倒序)

lrange mykey 0 -1

lpop 删除多个值中的一个(从右往左删)

lpop mykey

llen 查看键有多少个值

llen mykey

lrem 删除指定的值

lrem mykey 2 a 删除两个等于a的值

lrem mykey 1 c 删除应该等于c的值

lindex 查看指定的值

lindex mykey 5

lset 替换

lset mykey 5 10 把第五个值替换成10

linsert 指定位置添加值

linsert mykey before 10 9 在10的值前面添加9

linsert mykey after 10 8 在10的值后面添加8

rpush 创建多个值(正序)

rpush mykey a b c d 

rpop 删除值(从左往右)

rpop mykey

hash类型

散列,用来存储对象,对象类别和ID构成键名。hash存储的空间很小,占用的内存和持久化后的磁盘空间都很少。

hset 创建数据

hset myhash id 1 

hset myhash id1 1 id2 2 id3 3

hget 获取数据

hget myhash id

hash是一个键值对,包含多个对象和对象的值

myhash就是一个hash值,一个hash值可以存42亿个键值对

hlen 查看有多少个对象

hlen myhash

hdel 删除对象

hdel myhash id 

hdel myhash id1 id2 id3

hmget 获取多个对象的值

hmget myhash id1 id2

hgetall 获取所有的值

hgetall myhash

hkeys 展示对象

hkeys myhash

hvals 查看对象的值

hvals myhash

hsetnx 添加数据

hsetnx myhash id2 2

set 无序集合

无序集合,元素类型只能是string,无序集合当中元素具有唯一性,不允许重复

应用场景,set的数据来追踪唯一性的数据,比方说ip地址或者根据客户的id区分不同客户购买的同一产品

sadd myset a b c 添加数据

smembers myset 查看数据

scard myset 查看有多少个值

srandmember myset 随机展示一个值

spop myset 随机删除一个值

srem myset a  移除a

smove myset myset2 a 把myset中的数据a迁移到myset2中

zese 有序集合 

元素类型都是string 元素唯一,不能重复

每个元素都会关联一个doublel类型的分数score(表示权重),通过权重的大小进行排序,权重可以相同

zdd myzet 1 "one"  添加数据  (值哪呢过重复,1 这个顺序不能重复)

zrange myzet 0 -1 withscores 展示有序数据

zrangebyscore myzet 2 5 查看权重≤2 ≤score ≤5 的值

zrevrange myzet 1 3

总结

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

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

相关文章

期刊评价指标及其查询方法

1、期刊评价体系一 科睿唯安《期刊引证报告》(Journal Citation Reports, JCR) 科睿唯安每年发布的《期刊引证报告》(Journal Citation Reports, JCR)是一个独特的多学科期刊评价工具。JCR数据库提供基于引文数据的统计信息的期…

数字信号||快速傅里叶变换(FFT)(4)

实验四 快速傅里叶变换(FFT) 一、实验目的 (1)加深对快速傅里叶变换(FFT)基本理论的理解。 (2)了解使用快速傅里叶变换(FFT)计算有限长序列和无限长序列信号频谱的方法。 (3)掌握用MATLAB语言进行快速傅里叶变换时常用的子函数。 二、实验涉及的MATLAB子函数 1.fft 功能&am…

鸟哥的Linux私房菜(三)之环境开发工具篇

文章目录 Linux软件包管理器 - yumLinux下安装软件的方式认识yum查找软件包安装软件如何实现本地机器和云服务器之间的文件互传及其云服务器之间互传卸载软件 Linux编辑器 - vimvim的基本概念vim下各模式的切换vim命令模式各命令汇总vim底行模式各命令汇总vim替换模式各命令汇总…

快速幂的求解方法(位运算)

需要求解幂运算的解法,可以将需要运算的内容进行判别,众所周知,幂就是指数,就是将底数乘以自身完成n次自相乘,那么就可以幻化为他的幂的简化计算; 以二进制为例,你要求,即可以看作是…

win10系统通过docker部署pytorch的GPU环境

命名实体有关文章参考这篇文章 中文地址命名实体识别训练和预测 win10系统安装cuda环境参考这篇文章 搭建Pytorch的GPU环境超详细 文件结构 准备环境 (1)、安装cuda环境 (2)、安装docker 1、创建基础镜像,安装pytorch和python dockerfile # 使用适当的基础镜像 FROM…

安全防护软件的必要性:从微软蓝屏事件谈起

最近微软遭遇了的大规模蓝屏事件,让全球很多用户措手不及。这次事件告诉我们,保护我们的电脑和数据,安全防护软件是多么重要。 微软蓝屏事件源于网络安全公司CrowdStrike的技术更新错误,导致全球范围内大量Windows用户系统崩溃&a…

一元二次方程编程求解过程+题目

输入 输入的第一行包含两个正整数 T,M,分别表示方程数和系数的绝对值上限。 接下来 T 行,每行包含三个整数 a,b,c。 输出 输出 T 行,每行包含一个字符串,表示对应询问的答案,格式如题面所述。 每行输出的字符串中…

【netty系列-06】深入理解select、poll和epoll多路复用的区别

Netty系列整体栏目 内容链接地址【一】深入理解网络通信基本原理和tcp/ip协议https://zhenghuisheng.blog.csdn.net/article/details/136359640【二】深入理解Socket本质和BIOhttps://zhenghuisheng.blog.csdn.net/article/details/136549478【三】深入理解NIO的基本原理和底层…

分布式架构网络通信(RPC,RMI) 03

文章目录 1. 基本原理2. RPC 远程过程调用3. RMI 远程方法调用4. RMI代码实现4. BIO、NIO、AIO4.1 同步和异步4.2 阻塞和非阻塞4.3 BIO4.4 NIO4.5 AIO 1. 基本原理 要实现网络机器间的通讯,首先得来看看计算机系统网络通信的基本原理,在底层层面去看&am…

WSL桥接网络配置

仅做记录与分享,平台版本等不同无法指导更多。 一、需求 ubuntu虚拟机(WSL)桥接win11并且能联通外网(百度之类) 二、环境: 版本 Windows 11 专业版 版本号 23H2 安装日期 ‎2024/‎6/‎20 操作系统版本…

Mysql 集群搭建 05

文章目录 1. Mysql主从复制集群搭建1.1 主库配置1.2 从库配置 2. 分库分表2.1 拆分策略2.2 实现技术2.2.1 MyCat概述2.2.2 MyCat入门2.2.3 配置 schema.xml 3. 双主双从4. 双主双从读写分离 1. Mysql主从复制集群搭建 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志…

有什么开放式耳机比较好用?耳机选购指南附赠五款开放式耳机推荐!

现在的耳机市场真的越来越多元了,最近的开放式耳机也是越来越火了,很多小伙伴都在后台开始问我,到底要怎么样才能选到一款比较合适自己的开放式耳机呢?开放式耳机现在这么多品牌,这么多的型号,真的很难选择…

如何评估自动化测试的效益

目录 自动化测试实施成本 自动化前期开发成本包括: 后期维护成本包括: 自动化测试执行次数 自动化测试实施成本比 其中“自动化测试收益”可能包括: “自动化测试成本”包括但不限于: 测试稳定性 可扩展性和可维护性 自动…

java拼接字符串的四种方法StringBuilder、StringBuffer、StringJoiner、String.join(x,x )

1.直接复制以下代码运行查看运行结果 import java.util.ArrayList; import java.util.List; import java.util.StringJoiner;public class Test {public static void main(String[] args) throws Exception {List<String> strs new ArrayList<>();strs.add("…

“等保测评:如何进行有效的安全漏洞管理与网络安全法规遵从“

随着网络环境的复杂性增加&#xff0c;安全漏洞管理成为企业信息安全管理体系中的关键环节。等保测评要求企业具备发现、评估、修复和监控安全漏洞的能力&#xff0c;以保障信息系统的安全稳定运行。本文将围绕“等保测评&#xff1a;如何进行有效的安全漏洞管理”这一主题&…

qrcode生成二维码并下载【带logo图标】【带文字描述】

qrcode官网地址&#xff1a;http://jeromeetienne.github.io/jquery-qrcode/ 结果图&#xff1a; 不带文字 带文字 遇到问题&#xff1a; 1、中文乱码&#xff1a;需要先将中文字体转码。 2、qrcode.js生成的二维码是没有白边的&#xff0c;需要重新绘制边框logo文字 3、将生成…

IoTDB 入门教程 实战篇④——C#示例(开源)

文章目录 一、前文二、新建C#项目三、NuGet安装四、示例源码五、查询数据六、参考 一、前文 IoTDB入门教程——导读 本文详细阐述了如何通过一个C#项目成功连接到IoTDB时序数据库&#xff0c;进而展示了如何向该数据库高效地写入数据以及执行精确的数据查询操作。 此示例旨在为…

ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20‘ 报错解决办法

1.查找 libstdc.so.6* find / -name libstdc.so.6*2.copy一个libstdc.so.6.0.19到/usr/lib64/下 cp /usr/lib64/libstdc.so.6 /usr/lib64/3.创建软连接 ln -sf /usr/lib64/libstdc.so.6.0.31 /usr/lib64/libstdc.so.6完毕&#xff01;

RISC-V (四)内存管理

本章目的&#xff1a; 对内存进一步的管理&#xff0c;实现动态的分配和释放。 实现page级别的内存分配和释放。 内存管理分类 -自动管理内存-栈&#xff08;stack&#xff09; -静态内存-全局变量/静态变量。放在数据段里面。 -动态管理内存-堆&#xff08;heap&#xff09;…

【Docker】LXC 容器操作实战

一、实战目的 通过 lxc 来完成容器的创建&#xff0c;体会容器并了解 docker 并不是容器的唯一实现。 自 docker 0.9 版本起&#xff0c;docker 除了继续支持 LXC 外&#xff0c;还开始引入自家的 libcontainer&#xff0c;试图打造更通用的底层容器虚拟化库。如今的 docker…