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.mzph.cn/diannao/51746.shtml

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

相关文章

学习008-02-04-03 Group List View Data(组列表查看数据)

Group List View Data(组列表查看数据) This lesson explains how to group the Employee List View data by department and position. 本课介绍如何按部门和职位对员工列表视图数据进行分组。 Note Before you proceed, take a moment to review the …

机械学习—零基础学习日志(高数15——函数极限性质)

零基础为了学人工智能,真的开始复习高数 这里我们将会学习函数极限的性质。 唯一性 来一个练习题: 再来一个练习: 这里我问了一下ChatGPT,如果一个值两侧分别趋近于正无穷,以及负无穷。理论上这个极限值应该说是不存…

2024下《系统架构设计师》案例简答题,刷这些就够了!

2024年软考下半年已经越来越近了,不知道今年备考架构的同学们准备得怎么样了呢? 简答题一直是架构拿分的重点区域,对于许多考生来说,也往往是最具挑战性的部分。今天我就把那些重要的案例简答题类型整理汇总给大家,希望…

02 Go语言操作MySQL基础教程_20240729 课程笔记

概述 如果您没有Golang的基础,应该学习如下前置课程。 Golang零基础入门Golang面向对象编程Go Web 基础Go语言开发REST API接口_20240728 基础不好的同学每节课的代码最好配合视频进行阅读和学习,如果基础比较扎实,则阅读本教程巩固一下相…

Qt Designer,仿作一个ui界面的练习(二):部件内容的填充

有了完成了布局的基本框架设计之后,对各个部件逐步完成内容的填充。 一、还是从顶边栏开始: 1、在顶边栏的topLogo里面拖入一个QLabel(标签),命名为logoImage,删除标签的文字。 2、右键点击topLogo&#x…

计算机三级嵌入式(三)——嵌入式系统硬件组成

目录 考点1 嵌入式最小硬件系统 考点2 基于 ARM 内核的典型嵌入式应用系统硬件组成 考点3 ARM 的 AMBA 总线体系结构及标准 考点4 基于 ARM 内核的嵌入式芯片的硬件组成 考点5 存储器层次结构 考点6 存储器分类 考点7 存储器主要性能指标 考点8 片内存储器 考点9 外部…

IndexError: list index out of range

IndexError: list index out of range 目录 IndexError: list index out of range 【常见模块错误】 【解决方案】 原因分析 解决方法 示例代码 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身…

接口自动化中对于文件上传的处理方法

正常的接口自动化基本都是json的格式,对于文件上传是一种特殊的格式是表单格式针对这种表单格式在接口自动化中怎么处理,主要通过工作中使用的一个实际的例子进行分享 举例:web上需要导入一个文件实现相关的功能,主要通过两个接口…

C语言玩一下标准输出——颜色、闪烁、加粗、下划线属性

文章目录 C语言玩一下标准输出——颜色、闪烁、加粗、下划线属性转换Tip切换内容介绍显示方式字体色背景色 常用光标控制附示例和运行结果 C语言玩一下标准输出——颜色、闪烁、加粗、下划线属性 标准输出格式其属性可控制,控制由一系列的控制码指定。标准输出函数可…

这才是 PHP 高性能框架 Workerman 的立命之本

大家好,我是码农先森。 在这个大家都崇尚高性能的时代,程序员的谈笑间句句都离不开高性能,仿佛嘴角边不挂着「高性能」三个字都会显得自己很 Low,其中众所皆知的 Nginx 就是高性能的代表。有些朋友可能连什么是高性能都不一定理解…

C++11 列表初始化与类型声明

目录 ​ 0.前言 1.C11介绍 2.统一的列表初始化 2.1{}初始化 2.2initializer_list 2.2.1initializer_list 的基本用法 2.2.2用于类的 initializer_list 构造函数 2.2.3与标准库容器的结合 2.2.4优势与注意事项 3.新声明 3.1auto 3.1.1基本用法 3.1.2优势 3.1.3注意事项 3.2declt…

npm国内淘宝镜像registry镜像过期

我们在使用npm的时候会遇到淘宝镜像安装过期的问题 首先了解 npm 淘宝镜像是一个 npm 注册表的镜像,用于加速 npm 包的下载。 一、如何设置? 如何设置淘宝镜像?淘宝镜像已经从 registry.npm.taobao.org 切换到了 registry.npmmirror.com n…

贪吃蛇 C++简易版(完整代码)

代码&#xff1a; #include <iostream> #include <conio.h> #include <vector> #include <windows.h> #include <ctime>using namespace std; //设置范围 const int WIDTH 20; const int HEIGHT 20;const char EMPTY ; const char SNAKE O…

代码随想录总结

文章目录 1. 回溯法1.1 组合1.2 组合总和31.3 电话号码的字母组合 2. 1. 回溯法 经典问题&#xff1a;排列、组合、切割、子集、棋盘 void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本层集合中元素&#xff08;树中节点孩子的数量就是集合的…

【SpringBoot教程:从入门到精通】掌握Springboot开发技巧和窍门(四)-Vue项目配置环境、导航栏

主要写前端页面&#xff0c;采用vue框架写页面的导航栏&#xff01;&#xff01;&#xff01; 文章目录 前言 Vue项目配置环境 安装依赖 创建菜单 总结 前言 主要写前端页面&#xff0c;采用vue框架写页面的导航栏&#xff01;&#xff01;&#xff01; Vue项目配置环境 安装…

【状语从句】

框架 概念&#xff0c;特点主将从现连接词时间条件地点结果方式让步原因目的比较省略倒装 解读 1【概念&#xff0c;特点】 一个完整的句子&#xff0c;去修饰另一个完整句子中的动词&#xff0c;称为状语从句&#xff1b;特点&#xff1a;从句完整&#xff0c;只用考虑连接词是…

Git远程仓库推送

这里我只连接了两个站点的远程仓库&#xff0c;一个是国内的Gitee&#xff0c;另一个是Github&#xff0c;这两个站点的连接方式主要有两种&#xff0c;第一种就是通过https来连接远程仓库&#xff0c;另一种是通过ssh公钥来连接&#xff0c;这两个站点练接的大致过程都是一样的…

Acrel-1000DP分布式光伏监控系统在江苏盛佳德新材料有限公司4.03MW分布式光伏10KV并网系统的应用

安科瑞戴婷 Acrel-Fanny 摘要&#xff1a;随着我国社会的不断进步,经济得到迅速的发展,城市化进程也逐渐加快。城市电力配电网络的供电压力逐渐增加,传统的发电技术已经不再适用于目前城市电力配电的发展现状。传统发电技术电力转化的效率比较低,对空气的污染也比较大,不利于城…

如何使用大语言模型绘制专业图表

过去的一年里&#xff0c;我相信大部分人都已经看到了大语言模型(后文简称LLM)所具备的自然语言理解和文本生成的能力&#xff0c;还有很多人将其应用于日常工作中&#xff0c;比如文案写作、资料查询、代码生成……今天我要向大家介绍LLM的一种新使用方式——绘图。这里说的绘…

SpringBoot整合PowerJob 实现远程任务

PowerJob介绍 PowerJob 是全新一代分布式任务调度和计算框架&#xff0c;提供了可视化界面&#xff0c;可通过单机、远程等形式调用任务并提供了运行监控和日志查看的功能模块&#xff0c;是当前比较流行的分布式定时任务框架之一&#xff1b; PowerJob 官网文档地址 环境搭建…