Redis 缓存中间件

目录

概念

安装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.rhkb.cn/news/387304.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot集团门户网站--论文源码调试讲解

第2章 开发环境与技术 开发集团门户网站需要搭建编程的环境,也需要通过调查,对各个相关技术进行分析,选取适合本系统开发的技术与工具。 2.1 MySQL数据库 MySQL是一种具有安全系数、安全系数、混合开发性、高效化等特征的轻量关联数据库智…

sqli-labs(6-10)关通关讲解

sqli-labs(6-10)关通关讲解 Less-6 方法一:手工注入 1.判断闭合 http://localhost/sqli-labs/Less-6/?id1" //报错 http://localhost/sqli-labs/Less-6/?id1" -- //正常 http://localhost/sqli-labs/Less-6/?id1" and 11 -- http://localhos…

Python批量移除Word文档水印

Word文档被广泛用于各种正式与非正式的沟通场合。有时候这些文档中可能包含着不再需要的水印,比如早期的草稿标记、保密声明或是仅供预览的信息等。这些水印的存在可能会干扰文档的阅读体验,甚至在某些情况下导致信息传达的不准确或产生误解。移除Word文…

Canva收购Leonardo.ai,增强生成式AI技术能力

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

数据中台建设之数据汇聚与数据交换

目录 一、数据汇聚 1.1 概述 1.2 汇聚数据类型 1.2.1 结构化数据 1.2.2 半结构化数据 1.2.3 非结构化数据 1.3 汇聚数据模式 1.3.1 概述 1.3.2 离线 1.3.3 实时 1.4 汇聚数据方法 1.4.1 概述 1.4.2 ETL 1.4.3 ELT 1.5 汇聚数据工具 1.5.1 概述 1.5.2 Flink CDC…

AI多模态模型架构之输出映射器:Output Projector

〔探索AI的无限可能,微信关注“AIGCmagic”公众号,让AIGC科技点亮生活〕 本文作者:AIGCmagic社区 刘一手 前言 AI多模态大模型发展至今,每年都有非常优秀的工作产出,按照当前模型设计思路,多模态大模型的…

KVM虚拟化平台

一、概述 KVM 自 Linux 2.6.20 版本后就直接整合到 Linux 内核,它依托 CPU 虚拟化指令集(如InteI-VT、AMD-V)实现高性能的虚拟化支持。由于与 Linux 内核高度整合,因此在性能、安全性、兼容性、稳定性上都有很好的表现。 二、KVM原理简介 广义的 KVM 实…

【CN】Argo 持续集成和交付(二)

7.25.通知 概述 Argo CD 通知持续监控 Argo CD 应用程序,并提供一种灵活的方式来通知用户应用程序状态的重要变化。使用灵活的触发器和模板机制,可以配置何时发送通知以及通知内容。Argo CD 通知包含有用的触发器和模板目录。因此,可以直接…

linux网络配置与管理

目录 前言 查看网络配置 查看网络接口地址:(ifconfig) 查看DNS地址(cat /etc/resolv.conf) 查看网关地址(ip route) 启用,禁用网卡(ifup、ifdown) 查看…

day17(nginx反向代理)

反向代理 安装nginx 1.26.1 平滑升级 负载均衡 1.nginx 反向代理配置 反向代理:⽤户直接访问反向代理服务器就可以获得⽬标服务器 (后端服务器)的资源。 反向代理效果:当访问200主机(web1),&a…

DNS查询服务器的基本流程以及https的加密过程

DNS查询服务器的基本流程,能画出图更好,并说明为什么DNS查询为什么不直接从单一服务器查询ip,而是要经过多次查询,多次查询不会增加开销么(即DNS多级查询的优点)? 用户发起请求:用户…

量化、剪枝、蒸馏,这些大模型黑话到底说了些啥?

扎克伯格说,Llama3-8B还是太大了,不适合放到手机中,有什么办法? 量化、剪枝、蒸馏,如果你经常关注大语言模型,一定会看到这几个词,单看这几个字,我们很难理解它们都干了些什么&…

技术分享!国产ARM + FPGA的SDIO通信开发介绍!

SDIO总线介绍 SDIO(Secure Digital lnput and Output),即安全数字输入输出接口。SDIO总线协议是由SD协议演化而来,它主要是对SD协议进行了一些扩展。 SDIO总线主要是为SDIO卡提供一个高速的I/O能力,并伴随着较低的功耗。SDIO总线不但支持SDIO卡,而且还兼容SD内存卡。支持…

一文搞懂网络IO和java中的IO模型

目录 1.绪论 2.IO分类 3.用户空间和内核空间 4.同步阻塞IO 5.同步非阻塞IO 6.IO多路复用 6.1 基本原理 6.2 linux对IO多路复用的实现方式 6.3.1 select 1.实现原理 2.缺点 6.3.2 poll 1.实现原理 6.3.3 epoll 1.epoll数据结构 2.epoll的函数 3.epoll的优点 4…

JS小应用:从图床获取的html代码中提取IMG标签并提取图片复制到剪贴板

JS小应用:从图床获取的html代码中提取IMG标签并提取图片复制到剪贴板 问题产生 自己做站长,为了节省银子,难免要用到图床。有的图床可以直接给你URL,这当然是最好的情况: 而有的图床,却禁用了鼠标右键&am…

Null Pointer Exception: 如何快速定位和修复?️

Null Pointer Exception: 如何快速定位和修复?💡🛠️ Null Pointer Exception: 如何快速定位和修复?💡🛠️摘要引言正文内容什么是Null Pointer Exception?🤔NPE的常见原因&#x1f…

3D魔方lua核心脚本制作

制作不易,请好好欣赏 U→R→F→D→L→B 废话不多说,上脚本 --魔方基本运行程序 --星空露珠优化脚本lua --主核心来自分享 --666 --[=[ #G4=I 1 # 2-----------2------------1 # | U1(0) U2(1) U3(2) | # …

Java中的集合相关知识汇总

总结 Java集合 从数据结构可以分为:数组、Set、Map、队列、栈;从多线程安全可以分为线程安全与非线程安全的集合从关联关系可以总结如下(不包含多线程安全类): 点线框表示接口; 折线框表示抽象类; 实线框表示实现类…

【只出现一次的数字 III】python刷题记录

R2-位运算专题. 目录 哈希表 位运算 ps: 一眼哈希表啊 哈希表 class Solution:def singleNumber(self, nums: List[int]) -> List[int]:dictdefaultdict(int)ret[]for num in nums:dict[num]1for key in dict.keys():if dict[key]1:ret.append(key)return ret怎么用位…

[C++][STL源码剖析] 详解AVL树的实现

目录 1.概念 2.实现 2.1 初始化 2.2 插入 2.2.1 旋转(重点) 左单旋 右单旋 双旋 2.❗ 双旋后,对平衡因子的处理 2.3 判断测试 完整代码: 拓展:删除 1.概念 二叉搜索树虽可以缩短查找的效率,但…