由于笔者是初学者,并且办公电脑是公司的windows,所以笔者花了大量的时间去搜索redis的windows版本。
Redis的官方网站为:https://redis.io/
Redis的微软版本:https://github.com/MicrosoftArchive/redis/tree/win-3.2.100
Redis官方原版只支持linux,笔者花时间从GitHub上找到了微软提供的windows版,结果由于网络问题,一直提示下载失败。经历了惆怅的百度时间,发现Redis资源基本被垄断成了获利工具。这种行为是让笔者不能容忍的。明明只是个搬运工,非得把自己打造成物流公司。
于是笔者继续努力,翻山越岭地下载到了两篇资源:
Redis windows 安装版 Redis-x64-3.2.100安装版
Redis windows解压版 Redis-x64-3.2.100.zip
两篇资源同时也免费共享到了百度云盘里:
链接: https://pan.baidu.com/s/1jPnOgs91jLiD7FxNwqOx-g 密码: qrdq
下面就是继续Redis的安装学习
笔者先发安装版的使用方法,解压版的有空再发。
首先是选择安装路径和勾选把redis添加到环境变量中
第二部选择我们的安装端口,勾选是将端口添加到防火墙规则中,一般个人开发可以不勾选。
第三步设置最大内存限制,笔者由于公司电脑内存太低,所以就配置了个500兆。
随后安装完成进入使用阶段。
-
配置配置文件:安装目录下的redis.windows.conf,在修改配置文件的时候,属性一定要顶格,不能留有空白。否则会报错:Invalid argument during startup: unknown conf file parameter :
-
bind 127.0.0.1 port 6369 requirepass redispassword
-
-
启动服务:redis-server redis.windows.conf
笔者创建的是Marven项目,所以在调用外部依赖jar包的时候直接调用的pom.xml的dependency
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-pool/commons-pool -->
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.6</version>
</dependency>
如果读者没有使用maven做包管理,可以直接访问上方的链接,下载最新的jar包。
两个jar包
jedis.jar用于管理和链接Redis
commons-pool.jar用户管理Redis的线程池
使用双验证单例模式实现Jedis的管理 - 由于端口冲突,Redis的端口被调整为6369。
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* redis的链接工具
* @author yz
*
*/
public class RedisUtil {
private static JedisPool pool = null;
/**
* 单例模式的双锁实现
* @return
*/
private static final JedisPool getPoll() {
if(pool==null) {
synchronized(RedisUtil.class){
if(pool==null) {
JedisPoolConfig config = new JedisPoolConfig();
//最大活动对象数
config.setMaxTotal(500);
//最大能够保持idel状态的对象数
config.setMaxIdle(100);
//最小能够保持idel状态的对象数
config.setMinIdle(10);
//表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
config.setMaxWaitMillis(1000 * 1);
//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
config.setTestOnBorrow(true);
//“空闲链接”检测线程,检测的周期,毫秒数。如果为负值,表示不运行“检测线程”。默认为-1.
config.setTimeBetweenEvictionRunsMillis(1000*60);
//对于“空闲链接”检测线程而言,每次检测的链接资源的个数。默认为3.
config.setNumTestsPerEvictionRun(50);
pool = new JedisPool(config, "127.0.0.1", 6369,0,"redispassword");
}
}
}
return pool;
}
/**
* 获取redis的操作器Jedis
* @return
*/
public static final Jedis getInstance() {
if(pool==null)getPoll();
return pool.getResource();
}
/**
* 释放资源
* @param jedis
*/
public static final void release(Jedis jedis) {
jedis.close();
}
}
代码调用:
Jedis jedis=RedisUtil.getInstance();
jedis.set("testdemo", "张三是个老实人");
LOG.info(jedis.get("testdemo"));