1 - 搭建Redis数据库服务器|LNP+Redis
搭建Redis数据库服务器|LNP+Redis
- 搭建Redis数据库服务器
- 相关概念
- Redis介绍
- 安装Redis
- Redis服务常用管理命令
- 命令set 、 mset 、 get 、 mget
- 命令keys 、 type 、 exists 、 del
- 命令ttl 、 expire 、 move 、 flushdb 、flushall 、save、shutdown
- 配置文件解析
- LNP + Redis
- 部署网站运行环境LNP环境 统一使用host50做网站服务器
- 配置php支持redis
- 使用内存给网站服务提供存储数据的空间缺点
- Redis服务的内存清除策略
搭建Redis数据库服务器
相关概念
数据库服务软件分为2类:
- 关系型数据库服务软件 简称 RDBMS
按照预先设置的组织结构 将数据存储在物理介质上 数据之间可以做关联操作 - 非关系型数据库服务软件 简称 NoSQL
不仅仅是SQL 不需要预先定义数据存储结构 每条记录可以有不同的数据类型和字段个数 只需要 key values
Redis介绍
- 是一款高性能的(key/values)分布式内存数据库
- 支持数据持久化(定期把内存里数据存储到硬盘)
- 支持多种数据类型:字符、列表、散列、集合
- 支持master-salve模式数据备份
安装Redis
连接服务存取数据
说明:默认只能在本机连接redis服务 (只能访问自己 )
redis-cli
127.0.0.1:6379 > exit
Redis服务常用管理命令
命令set 、 mset 、 get 、 mget
192.168.4.50:6350> set name bob
OK
192.168.4.50:6350> mset age 19 sex boy
OK
192.168.4.50:6350> get name
"bob"
192.168.4.50:6350> mget age sex
1) "19"
2) "boy"
命令keys 、 type 、 exists 、 del
192.168.4.50:6350> keys *
1) "sex"
2) "age"
3) "name"
192.168.4.50:6350> keys ???
1) "sex"
2) "age"
192.168.4.50:6350> type age //使用set命令存储的变量都是字符类型
string
192.168.4.50:6350> del age
(integer) 1
192.168.4.50:6350> exists age //变量不存在返回值0
(integer) 0
192.168.4.50:6350> exists sex //变量存在 返回值1
(integer) 1
命令ttl 、 expire 、 move 、 flushdb 、flushall 、save、shutdown
192.168.4.50:6350> ttl sex //返回值-1 表示变量永不过期
(integer) -1
192.168.4.50:6350> expire sex 20 //设置变量过期时间为 20 秒
(integer) 1
192.168.4.50:6350> ttl sex //还剩14秒过期
(integer) 14
192.168.4.50:6350> ttl sex //返回值-2 表示已经过期
(integer) -2
192.168.4.50:6350> exists sex //变量已经不存在
(integer) 0
192.168.4.50:6350> move name 1 //把变量name移动到1号库里
(integer) 1
192.168.4.50:6350> select 1 //切换到1号库
OK
192.168.4.50:6350[1]> keys * //查看
1) "name"
192.168.4.50:6350[1]> select 0 //切换到0号库
OK
配置文件解析
文件里常用配置项说明 通过修改配置项 改变redis服务的运行配置,需要重启redis服务才能生效
注意:修改服务使用的IP地址、端口号、连接密码三项中的任意一项 都无法再使用脚本停止服务
解决办法:使用命令停止服务 或者 修改脚本
案例:修改主机host51 Redis服务使用的ip地址192.168.4.51 端口号6351 和连接密码123456
vim /etc/redis/6379.conf
70 bind 192.168.4.51
93 port 6351
501 requirepass 123456
:wq/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 start
redis-cli -h 192.168.4.51 -p 6351
auth 密码
// 或者 连接时 直接指定密码
redis-cli -h 192.168.4.50 -p 6350 -a 123456 # 命令停止服务
~ ]# redis-cli -h 192.168.4.50 -p 6350 -a 123456 shutdown
修改脚本 使其也可以使用脚本停止服务(启动脚本是使用shell语法编写)
[root@host50 ~]# vim +43 /etc/init.d/redis_6379
$CLIEXEC -h 192.168.4.50 -p 6350 -a 123456 shutdown
:wq
LNP + Redis
生产环境下会被网站的热点数据存放在内存存储服务器里,这样的好处是可以加快存取数据的速度,能够实现网站访问加速
通常网站会把频繁被访问的数据、数据小的数据、可再生的数据存储在内存存储的服务器里。
部署网站运行环境LNP环境 统一使用host50做网站服务器
1.安装nginx软件
yum -y install gcc pcre-devel zlib-devel
tar -xf nginx-1.12.2.tar.gz
cd nginx-1.12.2.tar.gz
./configure
make
make install
2.安装php软件
3.修改nginx服务的配置文件实现动静分离
4.启动服务
5.测试nginx服务能否解释php代码
配置php支持redis
在网站服务器编写php脚本 可以连接redis服务存储数据和查询数据 默认php不支持redis(也就是连接不支持redis服务)
1.安装软件提供连接redis服务的功能模块 在网站服务器主机做如下配置
]# tar -zxf php-redis-2.2.4.tar.gz //安装扩展包
]# cd phpredis-2.2.4/
]# phpize //生成配置文件php-config及 configure命令
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
]# ./configure --with-php-config=/usr/bin/php-config //配置
]# make //编译
]# make install //安装
2.让php进程在运行时,调用redis模块
systemctl restart php-fpm
3.查看是否支持redis服务
php -m | grep -i redis
redis
4.测试配置:
在网站服务器编写php脚本 存储数据和查询数据
在客户端访问网站服务器php脚本
在redis服务器本机能够看到数据 为成功
使用内存给网站服务提供存储数据的空间缺点
时间久了,Redis服务器host51会产生哪些问题?
1.存储空间不够用
解决办法:多台服务器一起提供数据储存服务 或 删除内存里已经存储的数据 腾出空间存储新数据
2.单点故障问题
3.数据的备份问题
4.访问多的时候 1台Redis服务处理不过来
Redis服务的内存清除策略
当内存空间不足,删除内存里已经存储的数据的方式
内存清除策略 是软件的开发者写功能程序并定义的名称方便运维调用。根据选择需要 使用哪种内存清除策略即可
相关文章:

1 - 搭建Redis数据库服务器|LNP+Redis
搭建Redis数据库服务器|LNPRedis 搭建Redis数据库服务器相关概念Redis介绍安装RedisRedis服务常用管理命令命令set 、 mset 、 get 、 mget命令keys 、 type 、 exists 、 del命令ttl 、 expire 、 move 、 flushdb 、flushall 、save、shutdown 配置文件解析 LNP …...

米贸搜|Facebook“精准营销”越来越难?或许是“受众定位”没彻底搞清!
一、为何要确定目标受众 对于每个广告主而言,面向最有可能成为其客户的用户营销非常重要,因此,确定目标受众,是Facebook广告投放中极其重要的一环。 二、什么是目标受众? 目标受众是您希望向其传达营销信息…...

【C++】内存分区模型
目录 1.程序运行前 2.程序运行后 3. new操作符 3.1 基本语法 3.2 开辟数组 C程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区: 存放全局变量和静态变量以及常量栈区 …...
通过strings二进制文件分析工具排查 version ‘GLIBC_2.25‘ not found 报错
strings命令简介 strings命令用于打印文件中可打印字符串, 可以打印文本文件、可执行程序,库文件等。一般用于分析可执行程序和库文件。strings命令较为常用的功能有以下两种 查看系统的GLIBC版本和目标文件的依赖的GLIBC版本,当系统的GLIBC版本与目标文…...

基于 MQTT 的开源桥接器:自由控制物联网设备 | 开源日报 No.151
Koenkk/zigbee2mqtt Stars: 10.5k License: GPL-3.0 Zigbee2MQTT 是一个 Zigbee 🐝 到 MQTT 桥接器 🌉,可以摆脱专有的 Zigbee 桥接器 🔨 允许您在不使用供应商桥接器或网关的情况下使用 Zigbee 设备通过 MQTT 桥接事件并控制 Z…...

【QT+QGIS跨平台编译】之七:【libjpeg+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
文章目录 一、libjpeg介绍二、文件下载三、文件分析四、pro文件五、编译实践一、libjpeg介绍 libjpeg是一个广泛使用的jpeg图像压缩和解压的函数库,采用 C 语言开发。 2013年1月,Independent JPEG Group发布了版本9,对新引入的无损编码模式进行了改进。2022年1月,发布了版…...

VI / VIM的使用
vi/vim 的区别简单点来说,它们都是多模式编辑器,不同的是 vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,而且 还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于 x win…...

第十二站(20天):C++泛型编程
模板 C提供了模板(template)编程的概念。所谓模板,实际上是建立一个通用函数或类, 其 类内部的类型和函数的形参类型不具体指定 ,用一个虚拟的类型来代表。这种通用的方式称 为模板。 模板是泛型编程的基础, 泛型编程即以一种独立于任何特定…...
【Docker】Dokcer学习① - 简介
【Docker】Docker学习① - 简介 一、Docker简介1. Docker是什么2. Docker组成3. Docker对比虚拟机4. Linux Namespace技术5. Linux control groups6. 容器管理工具 二、Docker安装及基础命令介绍三、Docker镜像管理四、Docker镜像与制作五、Docker数据管理六、网络部分七、Dock…...
PostgreSQL 100条命令
我会为您提供一些 PostgreSQL 中最常用的命令: 1. 创建数据库:CREATE DATABASE database_name; 2. 连接到数据库:\c database_name; 3. 创建表格:CREATE TABLE table_name (column1 datatype, column2 datatype, ...); 4. 插入数…...

HTTP动态代理的原理及其对网络性能的影响
HTTP动态代理是一种通过代理服务器来转发HTTP请求和响应数据的网络技术,它可以优化网络性能、提高网络安全性,并解决跨域请求的问题。本文将详细介绍HTTP动态代理的原理及其对网络性能的影响。 一、HTTP动态代理的原理 HTTP动态代理的基本原理是在客户…...

69.使用Go标准库compress/gzip压缩数据存入Redis避免BigKey
文章目录 一:简介二:Go标准库compress/gzip包介绍ConstantsVariablestype Headertype Reader 三:代码实践1、压缩与解压工具包2、单元测试3、为何压缩后还要用base64编码 代码地址: https://gitee.com/lymgoforIT/golang-trick/t…...
JavaScript实现的一些小案例
小案例 灯开关案例 <body><img id"light" src"img/off.jpg"><script>var light document.getElementById("light");var flag false;if(flag){light.src "img/on.jpg";flag false;}else{light.src "img/…...

MVC模式
Model-View-Controller : 模型-视图-控制器模式,用于应用程序的分层开发。 Model(模型):代表一个存取数据的对象。也可以带有逻辑,在数据变化时更新控制器。 View(视图):代表模型包含的数据的可视化。 Controller(控制器)…...
Java中的代理模式(一)
大家好👋,我是极客涛😎,今天我们聊一聊java中的代理模式,话不多说,还是老思路,什么是代理模式,为什么要有代理模式,如何实现代理模式 代理模式 在说java中的代理模式之前…...
跳跃游戏-算法
题目 给定一个数组nums {1,2,3,4,5},每个元素nums[i]表示从i这个位置最多可以向前跳跃nums[i]个台阶,求最小需要跳几次就可以调到末尾 思路 反向查找 从末尾开始逐个向前判断最远的起跳位置,接着再以该位置递归的判断 public int jumpT…...

ERP系统哪个好用?用友,金蝶,ORACLE,SAP综合测评
ERP系统哪个好用?用友,金蝶,ORACLE,SAP综合测评 ERP领域SAP、ORACLE相对于国内厂商如用友、金蝶优势在哪? SAP,ORACLE操作习惯一般国人用不惯;相对于国产软件,界面也很难看&#x…...

外汇天眼:美国证券交易委员会(SEC)采纳了一系列规定,以加强与特殊目的收购公司(SPACs)相关的投资者保护
美国证券交易委员会(SEC)今天通过了一系列新规和修订,以增强特殊目的收购公司(SPACs)的首次公开募股(IPOs)中的披露,并在SPACs与目标公司之间的后续业务合并交易(de-SPAC…...
kotlin map 与 flatmap
kotlin map 与 flatmap 是2个不同的概念的 map 是一种数据结构,flatmap 是一个高阶函数,处理集合用的 Map Map 是一种数据结构,它由一系列的键值对组成,每个键都是唯一的,并且与一个特定的值相关联。你可以通过键来…...

nginx-rtmp-module 支持 Enhancing RTMP HEVC(H.265)
Enhancing RTMP, FLV 2023年7月31号正式发布,主要支持了HEVC(H.265)、VP9、AV1视频编码,发布差不多半年了,很多开源项目已支持,最近打算播放和推送端也支持下,想找个支持的rtmp server方便测试用,但没找到合…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...