package com.heima.item.web;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.heima.item.pojo.Item;
import com.heima.item.pojo.ItemStock;
import com.heima.item.pojo.PageDTO;
import com.heima.item.service.IItemService;
import com.heima.item.service.IItemStockService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@RequestMapping("item")
public class ItemController {
@Autowired
private IItemService itemService;
@Autowired
private IItemStockService stockService;
@GetMapping("list")
public PageDTO queryItemPage(
@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "size", defaultValue = "5") Integer size){
// 分页查询商品
Page<Item> result = itemService.query()
.ne("status", 3)
.page(new Page<>(page, size));
// 查询库存
List<Item> list = result.getRecords().stream().peek(item -> {
ItemStock stock = stockService.getById(item.getId());
item.setStock(stock.getStock());
item.setSold(stock.getSold());
}).collect(Collectors.toList());
// 封装返回
return new PageDTO(result.getTotal(), list);
}
@PostMapping
public void saveItem(@RequestBody Item item){
itemService.saveItem(item);
}
@PutMapping
public void updateItem(@RequestBody Item item) {
itemService.updateById(item);
}
@PutMapping("stock")
public void updateStock(@RequestBody ItemStock itemStock){
stockService.updateById(itemStock);
}
@DeleteMapping("/{id}")
public void deleteById(@PathVariable("id") Long id){
itemService.update().set("status", 3).eq("id", id).update();
}
@GetMapping("/{id}")
public Item findById(@PathVariable("id") Long id){
return itemService.query()
.ne("status", 3).eq("id", id)
.one();
}
@GetMapping("/stock/{id}")
public ItemStock findStockById(@PathVariable("id") Long id){
return stockService.getById(id);
}
}
Centos安装Redis的所有材料,高级篇
需积分: 0 180 浏览量
更新于2022-09-25
收藏 560.93MB ZIP 举报
在本高级篇中,我们将深入探讨如何在CentOS操作系统上安装和配置Redis,这是一个高性能的键值存储系统,常用于数据库、缓存和消息代理。本文将覆盖从基础安装到高级配置的所有步骤,确保你能充分利用Redis的强大功能。
一、安装前准备
在开始安装Redis之前,确保你的CentOS系统是最新的。打开终端并运行以下命令:
```bash
sudo yum update -y
```
二、安装依赖
Redis依赖于jemalloc内存分配器,它提供更好的内存管理效率。我们需要添加EPEL(Extra Packages for Enterprise Linux)存储库,然后安装jemalloc:
```bash
sudo yum install epel-release -y
sudo yum install jemalloc -y
```
三、下载与安装Redis
从Redis官方网站获取最新稳定版本的源代码,通常在`https://redis.io/download`。下载后解压并进入目录:
```bash
wget http://download.redis.io/releases/redis-6.x.x.tar.gz
tar xvf redis-6.x.x.tar.gz
cd redis-6.x.x
```
接下来,编译和安装Redis:
```bash
make MALLOC=jemalloc
sudo make install
```
四、配置Redis
默认情况下,Redis不会作为服务启动。创建一个初始化脚本和服务配置文件:
```bash
sudo nano /etc/init.d/redis
```
添加以下内容,根据实际需求调整配置:
```bash
#!/bin/bash
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
case "$1" in
start)
echo "Starting Redis server..."
$EXEC /etc/redis/redis.conf
;;
stop)
echo "Stopping Redis server..."
$CLIEXEC -p 6379 shutdown
;;
*)
echo "Usage: /etc/init.d/redis {start|stop}"
exit 1
;;
esac
exit 0
```
保存并关闭文件。然后,为Redis创建配置文件:
```bash
sudo nano /etc/redis/redis.conf
```
这里可以设置各种选项,如端口、密码保护、持久化策略等。例如:
```conf
bind 0.0.0.0
port 6379
requirepass mypassword
appendonly yes
```
五、启动与守护进程化
设置Redis开机启动并启动服务:
```bash
sudo chmod +x /etc/init.d/redis
sudo chkconfig --add redis
sudo service redis start
```
六、验证安装
使用Redis客户端检查服务器是否正常运行:
```bash
redis-cli
```
如果一切正常,你应该能看到Redis的命令提示符。
七、高级配置
1. **主从复制**:设置Redis主从复制以实现数据冗余和故障转移。
2. **Sentinel监控**:通过Redis Sentinel系统监控主从节点状态,自动进行故障恢复。
3. **Cluster集群**:配置Redis Cluster实现分布式存储,处理大量数据。
4. **持久化策略**:调整RDB或AOF策略,平衡性能与数据安全性。
5. **安全**:限制网络访问,启用SSL加密通信,提高安全性。
八、性能优化
1. **TTL监控**:通过`EXPIRE`命令监控键的生命周期,避免内存浪费。
2. **内存管理**:合理使用数据结构,避免大对象占用过多内存。
3. **lua脚本**:使用Lua脚本执行原子操作,减少网络延迟。
九、监控与日志
配置日志文件,使用`syslog`或自定义日志位置记录Redis活动。同时,利用`INFO`命令定期获取服务器状态信息,进行性能监控。
总结,安装Redis并非难事,关键在于理解和应用其高级特性,以满足特定场景下的需求。通过以上步骤,你已经在CentOS上成功安装了Redis,并具备了进一步探索其高级功能的基础。
ZhangBlossom
- 粉丝: 4w+
- 资源: 285
最新资源
- 全自动洗衣机-单片机程序源码 这是产品实用程序,硬件由51单片机+水位传感器+电磁阀+马达组成 洗衣进程3种,洗涤模式2种,水位设定4种 若进出水超时会停机报警 本产品只是程序源码,内有较详细注
- 立体仓库 西门子1200 西门子1200码垛机完整项目程序,博图1200立体库码垛机带 注释 ,程序 涉及到变频器,触摸屏,工业机器人,视觉相机的程序控制.modbus tcp通讯,SCL编程,支持博
- matlab实现无人机编队路径规划和碰撞避免-无人机编队-路径规划-碰撞避免-matlab
- 基于遗传算法+PID的道路径规划控制算法simulink模型+carsim联合仿真,可选模型说明文件和操作说明
- 西门子PLC1500大型程序fanuc机器人汽车焊装 包括1台西门子1500PLC程序,2台触摸屏TP1500程序 9个智能远程终端ET200SP Profinet连接 15个Festo智能模块P
- 9套六轴机器人三维模型共9套六轴机器人三维模型,其中六套有结构三套有工程图 可用于结构了解学习,仿真模拟,设计借鉴
- 带条码打印的固定资产管理系统源码 本源码亲测可用 功能介绍 1.基本信息管理:包括资产分类,基本资料,资产编号规则,保存列间距和选择资产显示列等功能; 2.固定资产管理:包括资产增加,资产更新,资产
- matlab实现自适应模型预测控制无人车障碍物规避算法原理与源码-无人驾驶车辆-自适应模型预测-matlab
- 多脉冲双温模型求解,matlab,comsol 计算电子温度与晶格温度,电子密度曲线变化 matlab的双温模型
- BASiC半导体国产SiC碳化硅MOSFET分立器件及功率模块的技术进展与应用解析
- 分布式鲁棒电力系统状态估计 源代码,代码按照高水平文章复现 分布式PSSE方法它利用了传统的基于最小二乘的PSSE,并提供了一个鲁棒状态估计器 通过利用压缩采样,联合估计状态在IEEE14、IEEE
- 深度神经网络的电力系统实时状态估计与预测源代码代码按照高水平文章复现,保证正确 利用深度神经网络(DNNs)进行电力系统实时监测 在IEEE 118系统的实际负载数据实验中,新的基于dnn的PSSE
- 西门子PLC配KUKA机器人程序 程序为西门子S7-1500PLC博途调试: 西门子与KUKA机器人通讯; PLC控制KUKA机器人安全回路,设备安全装置控制; PLC与KUKA机器人信号交互,外部
- 时间序列预测趋势外推预测法MATLAB代码
- FCS-MPC模型预测控制仿真
- 基于STM32F103的密码检测串口通信 包括源代码、仿真 功能 上电打印版权信息 按任意数字按键,打印相应按键信息 输入6位密码,正确密码为123456 #号键为 格,再次按*键为确认 密码正确