centos7.x安装配置redis5.x(centos7 yum安装redis)
mhr18 2024-11-09 12:23 32 浏览 0 评论
下载安装redis
首先,我们需要在redis官网(https://www.redis.cn/,或者:https://redis.io/download/)下载redis安装文件
将下载好的包上传到Centos上并解压(本人上传到了usr/local目录下)
进入redis-5.0.3目录里,执行编译命令
make
如果报错如下的话:
致命错误:jemalloc/jemalloc.h:没有那个文件或目录
那就执行下边这个命令解决
make MALLOC=libc
编译完成之后,就可以将redis安装到指定目录
make PREFIX=/usr/local/redis install
此时/usr/local/redis下生成了一个bin目录
至此安装完成;
启动redis
启动方式一
前台启动,不推荐使用,进入/usr/local/redis/bin里执行启动命令(默认端口号:6379)
./redis-server
cp redis.conf /usr/local/redis/bin/
修改redis.conf 设置为后台启动,将daemonize no改为daemonize yes即可(redis.conf文件内容较多,全局搜索:/daemonize 然后回车,再不断敲N即可)
设置redis访问密码
需要永久配置密码的话就去redis.conf的配置文件中找到requirepass这个参数,如下配置:
修改redis.conf配置文件
# requirepass foobared
requirepass 123 指定密码123
启动Redis:进入/usr/local/redis/bin目录,执行下边命令
./redis-server /usr/local/redis/bin/redis.conf
由于redis.conf与redis-serve在同一级目录,所以执行下边命令即可
./redis-server redis.conf
关闭Redis:进入/usr/local/redis/bin目录,执行下边命令
./redis-cli shutdown
查看redis进程:
ps -ef | grep -i redis
看到如下信息:
root 1218 1 0 12:04 ? 00:00:00 /usr/local/redis/bin/redis-server 127.0.0.1:6379
root 1257 1186 0 12:11 pts/0 00:00:00 grep --color=auto -i redis
可以杀死Redis进程:
kill -9 1218
redis客户端操作
进入 /usr/local/redis/bin/目录:
./redis-cli
此时就可以设置值并取值了:
配置redis
配置允许远程连接Redis
redis 默认只允许自己的本地服务器(127.0.0.1)连接。如果想要其他电脑进行远程连接,将配置文件 redis.conf 中的 bind 127.0.0.1 注释掉(之前没注释,需要改为将其注释掉,默认只能连接本地)。
找到配置文件redis.conf中protected mode,默认protected mode yes,需要将其改为protected mode no
此时,远程就可以连接Redis了;
redis自带客户端连接远程redis服务端
# 进入到redis安装目录的bin目录里,执行如下命令
./redis-cli -h 192.168.237.129 -p 6379
连接上以后就可以向服务端发送命令了,Redis提供了PING命令来测试客户端与Redis的连接是否正常,如果连接正常会收到回复PONG
使用set和get可以向redis设置数据、获取数据:
del删除指定key的内容:
del name
查看当前库中所有的key值:
key *
SpringBoot连接并操作Redis
引入依赖
<!--Redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置文件里配置redis
spring:
application:
name: order-service
redis:
database: 0
#远程redis地址
host: 192.168.237.128
#redis默认端口就是6379
port: 6379
timeout: 2000
使用RedisTemplate操作Redis
@Autowired
private StringRedisTemplate redisTemplate;
...........................................
private Object saveOrderFail(int userId, int productId, HttpServletRequest request){
//监控报警 start
String saveOrderKey="save-order";
String sendValue = redisTemplate.opsForValue().get(saveOrderKey);
String ip=request.getRemoteAddr();
//注意,这里需要异步,不能同步,不然此处阻塞的话(发短息耗时的话)不会继续向下走
new Thread(()->{
if(StringUtils.isBlank(sendValue)){
System.out.println("调用发短信接口去发送短信;用户下单失败,请马上处理;"+ip);
//此时调用发短信接口去发送短信,略过
/**
* 在Redis里放入数据,防止一直不停的发短信
* 间隔时间20秒(正常比这个数据久,这里为了测试先设置20秒)
*/
redisTemplate.opsForValue().set(saveOrderKey,"save-order-fail",20, TimeUnit.SECONDS);
}else{
System.out.println("已经发生过短信了,20秒内不要发了");
}
}).start();
//监控报警 end
Map<String,Object> msg=new HashMap<>();
msg.put("code",-1);
msg.put("msg","抢购人数太多,稍后重试");
return msg;
}
使用RedisTemplate从redis里取数据
//从缓存里取数据
public Article findById(String id) {
//从缓存中提取
Article article=(Article)redisTemplate.opsForValue().get("article_"+id);
// 如果缓存没有则到数据库查询并放入缓存
if(article==null) {
article = articleDao.findById(id).get();
redisTemplate.opsForValue().set("article_" + id, article);
}
return article;
}
修改或删除数据库时使用RedisTemplate清空缓存
/**
* 修改
* @param article
*/
public void update(Article article) {
redisTemplate.delete( "article_" + article.getId() );//删除缓存
articleDao.save(article);
}
/**
* 删除
* @param id
*/
public void deleteById(String id) {
redisTemplate.delete( "article_" + id );//删除缓存
articleDao.deleteById(id);
}
使用RedisTemplate设置缓存过期时间
//过期时间为一天
redisTemplate.opsForValue().set("article_" + id, article,1,
TimeUnit.DAYS);
//过期时间为10秒
redisTemplate.opsForValue().set("article_" + id, article,10,
TimeUnit.SECONDS);
相关推荐
- Redis中缓存穿透问题与解决方法
-
缓存穿透问题概述在Redis作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从Redis缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都...
- 后端开发必看!Redis 哨兵机制如何保障系统高可用?
-
你是否曾在项目中遇到过Redis主服务器突然宕机,导致整个业务系统出现数据读取异常、响应延迟甚至服务中断的情况?面对这样的突发状况,作为互联网大厂的后端开发人员,如何快速恢复服务、保障系统的高可用...
- Redis合集-大Key处理建议
-
以下是Redis大Key问题的全流程解决方案,涵盖检测、处理、优化及预防策略,结合代码示例和最佳实践:一、大Key的定义与风险1.大Key判定标准数据类型大Key阈值风险场景S...
- 深入解析跳跃表:Redis里的"老六"数据结构,专治各种不服
-
大家好,我是你们的码农段子手,今天要给大家讲一个Redis世界里最会"跳科目三"的数据结构——跳跃表(SkipList)。这货表面上是个青铜,实际上是个王者,连红黑树见了都要喊声大哥。...
- Redis 中 AOF 持久化技术原理全解析,看完你就懂了!
-
你在使用Redis的过程中,有没有担心过数据丢失的问题?尤其是在服务器突然宕机、意外断电等情况发生时,那些还没来得及持久化的数据,是不是让你夜不能寐?别担心,Redis的AOF持久化技术就是...
- Redis合集-必备的几款运维工具
-
Redis在应用Redis时,经常会面临的运维工作,包括Redis的运行状态监控,数据迁移,主从集群、切片集群的部署和运维。接下来,从这三个方面,介绍一些工具。先来学习下监控Redis实时...
- 别再纠结线程池大小 + 线程数量了,没有固定公式的!
-
我们在百度上能很轻易地搜索到以下线程池设置大小的理论:在一台服务器上我们按照以下设置CPU密集型的程序-核心数+1I/O密集型的程序-核心数*2你不会真的按照这个理论来设置线程池的...
- 网络编程—IO多路复用详解
-
假如你想了解IO多路复用,那本文或许可以帮助你本文的最大目的就是想要把select、epoll在执行过程中干了什么叙述出来,所以具体的代码不会涉及,毕竟不同语言的接口有所区别。基础知识IO多路复用涉及...
- 5分钟学会C/C++多线程编程进程和线程
-
前言对线程有基本的理解简单的C++面向过程编程能力创造单个简单的线程。创造单个带参数的线程。如何等待线程结束。创造多个线程,并使用互斥量来防止资源抢占。会使用之后,直接跳到“汇总”,复制模板来用就行...
- 尽情阅读,技术进阶,详解mmap的原理
-
1.一句话概括mmapmmap的作用,在应用这一层,是让你把文件的某一段,当作内存一样来访问。将文件映射到物理内存,将进程虚拟空间映射到那块内存。这样,进程不仅能像访问内存一样读写文件,多个进程...
- C++11多线程知识点总结
-
一、多线程的基本概念1、进程与线程的区别和联系进程:进程是一个动态的过程,是一个活动的实体。简单来说,一个应用程序的运行就可以被看做是一个进程;线程:是运行中的实际的任务执行者。可以说,进程中包含了多...
- 微服务高可用的2个关键技巧,你一定用得上
-
概述上一篇文章讲了一个朋友公司使用SpringCloud架构遇到问题的一个真实案例,虽然不是什么大的技术问题,但如果对一些东西理解的不深刻,还真会犯一些错误。这篇文章我们来聊聊在微服务架构中,到底如...
- Java线程间如何共享与传递数据
-
1、背景在日常SpringBoot应用或者Java应用开发中,使用多线程编程有很多好处,比如可以同时处理多个任务,提高程序的并发性;可以充分利用计算机的多核处理器,使得程序能够更好地利用计算机的资源,...
- 用 C++ 写线程池是怎样一种体验?
-
在过去的几年里,我用C++写过各种各样的线程池,包括最简单固定线程数的、运行时动态调整线程数的、有存活时间的、有任务队列长度限制的、底层用纤程的、支持多个线程池合并以复用资源的、脱离管程完全从底层...
- TCP/IP协议栈在Linux内核中的运行时序分析
-
本文主要是讲解TCP/IP协议栈在Linux内核中的运行时序,文章较长,里面有配套的视频讲解,建议收藏观看。1Linux概述 1.1Linux操作系统架构简介Linux操作系统总体上由Linux...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)