redis禁止几个危险命令的方法

这几天客户一直给我反映一个问题,那就是他的缓存服务器redis每天会清理库,很纳闷,我配置的redis一般保持的默认,不应该会每天去清理库的,感觉应该还是他的程序上有点问题吧。

第一次用SSM+Jedis搭建web项目,SSM引用之前随笔:http://www.cnblogs.com/duniang/p/8334983.html,在这记录一下。

不过,不管程序问题还是配置问题,我想到就是可以吧清库的命令禁掉,这样即使他程序要去清理也是没办法的,于是就百度了一下,看到所有相关的文档都是一个人写的,就是在redis.conf中使用rename-conmand

一、redis安装

这里不记录详细过程,只记录大概流程也就是比较重要的步骤。

1、redis推荐安装在Linux系统下,因此紧随潮流,安装虚拟机(VMware)、Linux系统(CentOS)。

2、电脑主系统是Windows因此为了方便,在Windows系统安装SecureCRT来链接Linux系统。

3、下载redis压缩包:http://www.redis.cn/download.html

4、安装redis需要gcc环境,因此Linux系统中需要安装gcc环境:yum install gcc-c++

5、解压redis压缩包,安装redis:(命令突然想不起来了,以后有机会在补上吧)

6、安装redis完成后,这时启动redis是属于前端启动,说直白点就是启动后命令窗口就无法操作了(需Ctrl+c退出)。前端启动很不方便,因此需要设置成后端启动:

  • 进入之前解压后redis的文件copy文件(redis.conf)到redis安装路径,(此处截图做个标记)
  • 图片 1
  • 修改redis.conf文件 daemonize yes(大概在100+行):

  • 图片 2

  • 最后测试, 注意命令需要携带redis.conf文件(不然它是不会解析redis.conf文件的): ./bin/redis-server  ./redis.conf

rename-command FLUSHALL ""rename-command FLUSHDB ""rename-command KEYS ""

二、pom.xml

添加Jedis的jar包,此处记录一下,之前报错的时候搜bug有一点意外收获:jedis包括2.4.1,2.5.1等高版本的JedisPoolConfig没有maxActive属性。

 

1     <dependency>
2       <groupId>redis.clients</groupId>
3       <artifactId>jedis</artifactId>
4       <version>2.9.0</version>
5     </dependency>

 

完了,之后我就去重启redis,以为OK了,仔细看了redis的日志,发现有问题。

三、redis.properties

redis配置有好多,我没有仔细查,只是记录一下各位前辈常用的一下配置

 1 ##########################
 2 ## redis缓存配置
 3 ##########################
 4 # redis主机IP
 5 redis.host=redisIP地址
 6 # redis端口
 7 redis.port=6379
 8 # 链接超时
 9 # redis.timeout=2000
10 # 密码
11 # redis.password=root
12 # 指定redis数据库
13 # redis.database=2
14 
15 ##########################
16 ## redis连接池配置
17 ##########################
18 # 最大连接数
19 redis.maxTotal=30
20 # 最大空闲连接数
21 redis.maxIdle=10
22 # 获取链接最大等待毫秒
23 redis.maxWaitMillis=1000
24 # 获取链接时检查有效性
25 redis.testOnBorrow=true
26 
27 # 在空闲时监测有效性
28 # redis.testWhileIdle=true
29 # 链接耗尽时是否阻塞
30 # redis.blockWhenExhausted=true
31 # 每次释放链接的最大数目
32 # redis.numTestsPerEvictionRun=1024
33 # 释放链接的扫描间隔(毫秒)
34 # redis.timeBetweenEvictionRunsMillis=30000
35 # 最小空闲时间
36 # redis.minEvictableIdleTimeMillis=1800000
37 # 链接空闲多久后释放
38 # redis.softMinEvictableIdleTimeMillis=10000
Unknown command ‘flushall‘ reading the append only file

四、applicationContext-Redis.xml

第一个项目不要多复杂,能跑起来就可以,所以没有配置过多。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 5 
 6     <!-- 导入redis.properties -->
 7     <bean id="propertyConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 8         <property name="location" value="classpath:redis.properties" />
 9     </bean>
10 
11     <!-- redis 数据源 -->
12     <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
13         <!-- 定义最大连接数 -->
14         <property name="maxTotal" value="${redis.maxTotal}" />
15         <!-- 定义最大空闲链接数 -->
16         <property name="maxIdle" value="${redis.maxIdle}" />
17         <!-- 定义最长等待时间 -->
18         <property name="maxWaitMillis" value="${redis.maxWaitMillis}" />
19         <!-- 在获取连接时检查是否有效性 -->
20         <property name="testOnBorrow" value="${redis.testOnBorrow}" />
21     </bean>
22 
23     <!-- redis 链接池 -->
24     <bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="destroy" depends-on="poolConfig">
25         <!-- redis 主机IP -->
26         <constructor-arg name="host" value="${redis.host}" />
27         <!-- redis 端口 -->
28         <constructor-arg name="port" value="${redis.port}" />
29         <!-- 加载JedisPool配置信息 -->
30         <constructor-arg name="poolConfig" ref="poolConfig" />
31     </bean>
32 
33 
34 </beans>

本文由皇家赌场手机版发布于首页,转载请注明出处:redis禁止几个危险命令的方法

相关阅读