redis设置密码以及jedisPool设置密码
转:
redis设置密码以及jedisPool设置密码
在百度云安装redis服务之后,一直给我发送系统安全警告,推荐我redis设置访问密码,于是出于安全考虑我就设置一下redis的密码
1.修改redis.conf配置文件:

找到requirepass这一行,解注这一行代码,requirepass后面就是跟的自己的密码。
2.关闭redis服务,发现报错:

可以使用下面两个方法关闭服务:
方式一:通过ps aux|grep redis命令查看redis进程,然后通过kill -9 pid方式杀掉进程

如图34691就是pid
方式二:用redis-cli客户端登录, 然后shutdown 然后exit 就OK了

3.启动redis服务:
我们用redis.conf配置文件启动redis服务,然后登录客户端,发现这时候需要我们输入密码了,说明修改的密码已经生效了

4.使用密码连接redis客户端:
使用./redis-cli -a 密码 连接客户端

这时候发现就能连上客户端了!
5.使用jedispool连接redis服务,首先编写redis.properties属性配置文件,将密码端口等信息填写进去
- #ip地址
- redis.host=192.168.25.131
- #端口号
- redis.port=6379
- #如果有密码
- redis.password=123456
- #客户端超时时间单位是毫秒 默认是2000
- redis.timeout=3000
- #数据库,默认的是0
- redis.database=0
- #最大空闲数
- maxIdle=300
- #连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal
- maxActive=1000
- #控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性
- maxTotal=1000
- #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
- maxWait=1000
- #在空闲时检查有效性, 默认false
- testOnBorrow=false
- #连接耗尽是否阻塞,false代表抛异常,true代表阻塞直到超时,默认为true
- blockWhenExhausted=false
- #下面的不是必须的配置
- #连接的最小空闲时间 默认1800000毫秒(30分钟)
- minEvictableIdleTimeMillis=300000
- #每次释放连接的最大数目,默认3
- numTestsPerEvictionRun=1024
- #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
- timeBetweenEvictionRunsMillis=30000
- #是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个,数据量大的时候建议关闭
- testWhileIdle=true
6.编写applicationContext-redis.xml,将jedispool纳入spring管理,加载属性配置文件(外面包一层JedisClientPool只是为了如果使用集群方式的话就不需要改业务代码了,只需要改配置就行,使用了策略模式)
查看jedisPool的源码我们发现如果想要设置密码只有两种构造方法可以选用,这里我们选择如下这种构造方法在spring配置文件中进行配置:
- public JedisPool(final GenericObjectPoolConfig poolConfig, final String host, int port,
- int timeout, final String password, final int database) {
- this(poolConfig, host, port, timeout, password, database, null);
- }
由上面的构造方法我们得知如果jedispool使用密码的话需要配置poolConfig,host,port,timeout,password,database等属性,我们在spring的xml文件中进行配置,并加载上面第五点已经写好的配置文件就行了
- <!--连接redis单机版,创建了一个JedisClientPool的bean,创建这个bean需要一个jedisPool属性,在下面-->
- <bean class="cn.e3mall.common.jedis.JedisClientPool" id="jedisClientPool">
- <property name="jedisPool" ref="jedisPool"></property>
- </bean>
- <!--JedisPool这个bean的构造方法需要多个参数-->
- <bean class="redis.clients.jedis.JedisPool" id="jedisPool" >
- <constructor-arg name="host" value="${redis.host}"></constructor-arg>
- <constructor-arg name="port" value="${redis.port}"></constructor-arg>
- <constructor-arg name="password" value="${redis.password}"></constructor-arg>
- <constructor-arg name="timeout" value="${redis.timeout}"></constructor-arg>
- <constructor-arg name="database" value="${redis.database}"></constructor-arg>
- <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg>
- </bean>
- <bean class="redis.clients.jedis.JedisPoolConfig" id="jedisPoolConfig">
- <property name="maxIdle" value="${maxIdle}" />
- <property name="maxTotal" value="${maxActive}" />
- <property name="maxWaitMillis" value="${maxWait}" />
- <property name="testOnBorrow" value="${testOnBorrow}" />
- <property name="blockWhenExhausted" value="${blockWhenExhausted}" />
- </bean>
7.jedisPool接口以及实现类
下面我们编写jedispool的接口以及实现类:
接口:
- package cn.e3mall.common.jedis;
- import java.util.List;
- public interface JedisClient {
- String set(String key, String value);
- String get(String key);
- Boolean exists(String key);
- Long expire(String key, int seconds);
- Long ttl(String key);
- Long incr(String key);
- Long hset(String key, String field, String value);
- String hget(String key, String field);
- Long hdel(String key, String... field);
- Boolean hexists(String key, String field);
- List<String> hvals(String key);
- Long del(String key);
- }
实现类:
- package cn.e3mall.common.jedis;
- import redis.clients.jedis.Jedis;
- import redis.clients.jedis.JedisPool;
- import java.util.List;
- public class JedisClientPool implements JedisClient {
- private JedisPool jedisPool;
- public JedisPool getJedisPool() {
- return jedisPool;
- }
- public void setJedisPool(JedisPool jedisPool) {
- this.jedisPool = jedisPool;
- }
- @Override
- public String set(String key, String value) {
- Jedis jedis = jedisPool.getResource();
- String result = jedis.set(key, value);
- jedis.close();
- return result;
- }
- @Override
- public String get(String key) {
- Jedis jedis = jedisPool.getResource();
- String result = jedis.get(key);
- jedis.close();
- return result;
- }
- @Override
- public Boolean exists(String key) {
- Jedis jedis = jedisPool.getResource();
- Boolean result = jedis.exists(key);
- jedis.close();
- return result;
- }
- @Override
- public Long expire(String key, int seconds) {
- Jedis jedis = jedisPool.getResource();
- Long result = jedis.expire(key, seconds);
- jedis.close();
- return result;
- }
- @Override
- public Long ttl(String key) {
- Jedis jedis = jedisPool.getResource();
- Long result = jedis.ttl(key);
- jedis.close();
- return result;
- }
- @Override
- public Long incr(String key) {
- Jedis jedis = jedisPool.getResource();
- Long result = jedis.incr(key);
- jedis.close();
- return result;
- }
- @Override
- public Long hset(String key, String field, String value) {
- Jedis jedis = jedisPool.getResource();
- Long result = jedis.hset(key, field, value);
- jedis.close();
- return result;
- }
- @Override
- public String hget(String key, String field) {
- Jedis jedis = jedisPool.getResource();
- String result = jedis.hget(key, field);
- jedis.close();
- return result;
- }
- @Override
- public Long hdel(String key, String... field) {
- Jedis jedis = jedisPool.getResource();
- Long result = jedis.hdel(key, field);
- jedis.close();
- return result;
- }
- @Override
- public Boolean hexists(String key, String field) {
- Jedis jedis = jedisPool.getResource();
- Boolean result = jedis.hexists(key, field);
- jedis.close();
- return result;
- }
- @Override
- public List<String> hvals(String key) {
- Jedis jedis = jedisPool.getResource();
- List<String> result = jedis.hvals(key);
- jedis.close();
- return result;
- }
- @Override
- public Long del(String key) {
- Jedis jedis = jedisPool.getResource();
- Long result = jedis.del(key);
- jedis.close();
- return result;
- }
- }
8.测试类:
- package cn.e3mall.jedis;
- import cn.e3mall.common.jedis.JedisClient;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- /**
- * @author sunqizheng
- * @Title: TestJedisClient
- * @ProjectName ttmall
- * @Description: TODO
- * @date 2018/9/1917:21
- */
- public class TestJedisClient {
- @Test
- public void TestJedisClient() throws Exception{
- //初始化一个spring容器
- ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-redis.xml");
- //从容器中获得JedisClient对象,(拿到接口的对象)
- JedisClient jedisClient = applicationContext.getBean(JedisClient.class);
- jedisClient.set("mytest","jedisClient1");
- String string = jedisClient.get("mytest");
- System.out.println(string);
- }
- }
测试结果:

测试成功
redis设置密码以及jedisPool设置密码的更多相关文章
- 【微软版本】redis 安装启动及设置密码<windows>
redis 安装启动及设置密码<windows> redis 1. 安装 1.1 下载解压包,直接解压到任意路径下即可 windows下载地址:ttps://github.com/MS ...
- redis连接池——JedisPool和JedisCluster的介绍与使用
目录 Jedis使用方式的介绍 Redis连接池介绍 创建连接池配置文件 单机版的Redis连接池 集群版的Redis连接池 总结 Jedis使用方式的介绍 Jedis就是Java实现的操作Redis ...
- Consider defining a bean of type 'redis.clients.jedis.JedisPool' in your configuration.
报错信息 原因是没有Jedispool没有注入 import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml ...
- serviceStack.Redis 在PooledRedisClientManager 中设置密码
ServiceStack.Redis 是一个C#访问Redis的客户端,可以说可以通过它实现所有需要Redis-Cli的功能.但是今天我在主Redis 实例设置了访问密码,而在slave 上没有设置, ...
- redis权限认证(设置密码)的方法
redis可以通过设置密码来增强安全强度.除了设置密码,我们还可以通过修改redis的默认端口.对端口做防火墙等.那么如何开启redis的密码功能呢?以下就是详细的步骤方法: 打开redis.conf ...
- redis 安装启动及设置密码<windows>
redis 1. 安装 1.1 下载解压包,直接解压到任意路径下即可 windows下载地址:ttps://github.com/MSOpenTech/redis/releases 2.启动 2.1 ...
- redis 连接字符串,设置密码
<add name="Abp.Redis.Cache" connectionString="127.0.0.1:6379,password=123456" ...
- 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第七天】(redis缓存)
https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...
- windows下远程访问Redis,windows Redis绑定ip无效,Redis设置密码无效,Windows Redis 配置不生效,Windows Redis requirepass不生效,windows下远程访问redis的配置
转载:http://fanshuyao.iteye.com/blog/2384074 一.Redis下载地址: https://github.com/MicrosoftArchive/redis/re ...
随机推荐
- ArcGIS DeskTop 10.2 的安装与破解
ArcGIS DeskTop 10.2套件作为一组常用的ArcGIS软件为我们提供了对地图原始数据进行加工以及各种操作,通过这组软件我们能够很好地定制我们最终的地图样式,但是更多的时候我们需要对这组软 ...
- C# 将当前应用程序写入到注册表开机启动项中
在使用C#进行应用程序的开发过程中,经常有一个需求就是让应用程序开机后自动启动,这个是一个很常见的需求,最常规的做法(这里以Win7操作系统为例),打开:开始=>所有程序=>启动文件夹(路 ...
- vue 关于生命周期
序言: 1. vue 单组件的生命周期: 2. vue 父子组件的生命周期: 3. axios 异步请求 与 vue 的组件周期: 一.vue 每个组件的生命周期 关于每个组件的生命周期,官方文档里也 ...
- 我对领域驱动设计(DDD)的学习成果
领域驱动设计之领域模型 2004年Eric Evans发表Domain-Driven Design – Tackling Complexity in the Heart of Software (领域 ...
- React 学习(三) ---- state 和 事件处理函数
在上两节中,我们讲述了props, 组件使用props进行渲染,但是这是一次性的, props渲染完成之后就不做任何事情了,但是现实中却不是这样的,当我们点击购物车上的加减按钮时,数量会自动加1或减1 ...
- [西安交大附中集训] d6 删边(cip)
B. 删边(cip.cpp/in/out 1S/256M) 题面 给出一个没有重边和自环的无向图,现在要求删除其中两条边,使得图仍然保持连通. 你的任务是计算有多少组不合法的选边方案.注意方案是无序二 ...
- Nginx 用分片提示缓存效率
L:107 slice 模块 Syntax:slice size;Default: slice 0; Context:http, server, location 功能:通过range协议将大文件分解 ...
- linu系统文件授权命令
- 爬虫_古诗文网(队列,多线程,锁,正则,xpath)
import requests from queue import Queue import threading from lxml import etree import re import c ...
- 【BZOJ4771】七彩树(主席树)
[BZOJ4771]七彩树(主席树) 题面 BZOJ 题解 如果没有深度限制,每次只询问子树内的颜色个数,除了树套树\(dfs\)序加前驱或者后继强行二维数点之外,还有这样一种做法: 把所有相同颜色的 ...