redis如何设置密码及验证密码_redis如何设置密码及验证密码

redis如何设置密码及验证密码_redis如何设置密码及验证密码在百度云安装redis服务之后,一直给我发送系统安全警告,推荐我redis设置访问密码,于是出于安全考虑我就设置一下redis的密码1.修改redis.conf配置文件:找到requirepass这一行,解注这一行代码,requirepass后面就是跟的自己的密码。2.关闭redis服务,发现报错:可以使用下面两个方法关闭服务:方式一:通过psaux|grepred…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在百度云安装redis服务之后,一直给我发送系统安全警告,推荐我redis设置访问密码,于是出于安全考虑我就设置一下redis的密码

1.修改redis.conf配置文件:

redis如何设置密码及验证密码_redis如何设置密码及验证密码

找到requirepass这一行,解注这一行代码,requirepass后面就是跟的自己的密码。

2.关闭redis服务,发现报错:

redis如何设置密码及验证密码_redis如何设置密码及验证密码

可以使用下面两个方法关闭服务:

方式一:通过ps aux|grep redis命令查看redis进程,然后通过kill -9 pid方式杀掉进程

redis如何设置密码及验证密码_redis如何设置密码及验证密码

如图34691就是pid

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

redis如何设置密码及验证密码_redis如何设置密码及验证密码

3.启动redis服务:

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

redis如何设置密码及验证密码_redis如何设置密码及验证密码

4.使用密码连接redis客户端:

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

redis如何设置密码及验证密码_redis如何设置密码及验证密码

这时候发现就能连上客户端了!

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如何设置密码及验证密码_redis如何设置密码及验证密码

测试成功

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197026.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • C语言之位运算符_c语言按位取反运算符怎么用

    C语言之位运算符_c语言按位取反运算符怎么用1、在C语言中,位运算符能够针对整数和字符数据的位(bit)进行逻辑与位移的运算,通常区分为“位逻辑运算符”与“位位移运算符”两种。2、位逻辑运算符如下表:运算符 功能 运算过程 & AND(与) 逐位与 | OR(或) 逐位或 ^ XOR(异或) 逐位异或 ~ NOR(非) 逐位非 案例程序如下:#include<stdio.h>#include<stdlib.h&gt…

  • Mysql 日期类型比较 TIMESTAMPDIFF

    Mysql 日期类型比较 TIMESTAMPDIFF  在数据库查询中,经常遇到计算2个日期相差值,SQL提供一个非常有用的函数:TIMESTAMPDIFFT。  基本语法:TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)    其中,interval的取值可以为:SECOND,MINUTE,HOUR,DAY,WEEK,MONTH,QUARTERorYEAR   …

  • 开发一款Android App,从零开始详细讲解[通俗易懂]

    开发一款Android App,从零开始详细讲解[通俗易懂]入门篇:第一篇:开发环境篇第二篇:材料设计篇第三篇:规范开发篇第四篇:从项目开发到上架篇(篇章调整,最后更新)进阶篇:第五篇:设计模式篇第六篇:网络请求篇(上)    网络请求篇(下)第七篇:图片处理篇第八篇:数据库篇第九篇:开源资源篇高阶篇:第十篇:自定义控件篇第十一篇:跨进程篇关于Demo写这个系列的文章的同时,也在做一个小Demo。功能很简单,利用豆瓣电影Api实现一款基于Android的电影集合的App。starmeonGitHub! 该项目的数据源来自于豆瓣;

  • voliate和synchronized「建议收藏」

    voliate和synchronized「建议收藏」线程安全考虑三个方面:原子性,可见性,有序性为什么使用voliate关键字?我们先来看正常情况下线程的执行

  • potplayer软件安装与常用配置

    potplayer软件安装与常用配置potplayer软件安装与常用配置1安装potplayer是一款十分好用的视频播放器,可以播放很多格式的视频,自定义皮肤,任意倍速,截取视频片段,还可以播放直播源(比如中国的CCTV以及各大卫视)…potplayer网址下载安装即可,最后如果显示要安装插件的话,去掉勾选即可2使用设置无边框:首先打开设置界面(快捷键F5),勾选如下两项设置打开视频时,默认居中显示,非全屏:首先打开设置界面(快捷键F5),进行如下两项设置进度条缩略图:首先打开设置界面(快捷键F5

  • sqlbulkcopy 使用DataTable作为数据源的数据类型问题–来自数据源的String类型的给定值不能转换为指定目标列的类型 uniqueidentifier…

    sqlbulkcopy 使用DataTable作为数据源的数据类型问题–来自数据源的String类型的给定值不能转换为指定目标列的类型 uniqueidentifier…今天做批量插入的时候,SQLSERVER总是报错,错误提示“来自数据源的String类型的给定值不能转换为指定目标列的类型uniqueidentifier”。首先核对了一下定义的dataTable中的DataColumn[]的顺序和数量,发现和数据库的表结构是一致的,而且把代码中对dataRow[]对应位置赋值的语句屏蔽后,执行成功。因此可以确定主要还是由于类型转换的时候的问题。后来…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号