jfinal集成redis教程
Redis 简介
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
· Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
· Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
· Redis支持数据的备份,即master-slave模式的数据备份。
Redis 优势
· 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
· 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
· 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
· 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Redis 安装
一:Window 下安装
下载地址:https://github.com/MSOpenTech/redis/releases。 也可以使用教程提供,版本是一致的。
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 G 盘。
二、安装Redis
1.这里下载的是Redis-x64-3.2.100版本,我的电脑是win7 64位,所以下载64位版本的,在运行中输入cmd,然后把目录指向解压的Redis目录。
1
2
|
G: CD Redis-x64-3.2.100 |
2、启动命令
redis-server redis.windows.conf,出现下图显示表示启动成功了。
三、设置Redis服务
1、由于上面虽然启动了redis,但是只要一关闭cmd窗口,redis就会消失。所以要把redis设置成windows下的服务。
也就是设置到这里,首先发现是没用这个Redis服务的。
2、设置服务命令
redis-server --service-install redis.windows-service.conf --loglevel verbose
输入命令之后没有报错,表示成功了,刷新服务,会看到多了一个redis服务。
3、常用的redis服务命令。
卸载服务:redis-server --service-uninstall
开启服务:redis-server --service-start
停止服务:redis-server --service-stop
Redis 客户端的基本语法为:
$ redis-cli
执行 PING 命令,该命令用于检测 redis 服务是否启动。
jfinal集成rieds
1:添加依赖架包
jedis-2.9.0.jar commons-pool2-2.4.2.jar commons-pool-1.5.5.jar fst-2.50.jar jackson-core-2.5.3.jar jackson-annotations-2.4.2.jar jackson-databind-2.1.1.jar
2:配置文件配置相关参数 (项目中配置在config-base-dev.txt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
##########redis相关配置############# #访问地址 redis_host= 127.0 . 0.1
#访问端口 redis_port= 6379
#注意,如果没有password,此处不设置值,但这一项要保留 redis_password= #最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为 0 表示无限制。
redis_maxIdle= 300
#连接池的最大数据库连接数。设为 0 表示无限制
redis_maxTotal= 600
#最大建立连接等待时间。如果超过此时间将接到异常。设为- 1 表示无限制。单位 秒
redis_maxWait= 2
#在borrow一个jedis实例时,是否提前进行alidate操作;如果为 true ,则得到的jedis实例均是可用的;
redis_testOnBorrow= true
#超时时间 redis_timeout= 2
|
3: JFinalConfig 配置plugin
1
2
3
4
|
configPlugin(Plugins me) { RedisPlugin redis = ESRedisPlugin().config();
me.add(redis);
} |
4:ESRedisPlugin配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
public class ESRedisPlugin {
private String host;
private int port;
private int timeout; // 过期时间 单位 秒
private String password;
private int maxTotal; // 设置最大实例总数
private int maxIdle; // 空闲数
private int maxWait; // 等待时间 单位 : 秒
private String defualtCacheName = "redis" ; //默认cacheName
RedisPlugin redisPlugin ;
public RedisPlugin config() {
try {
host = EsPropKit.get( "redis_host" ).trim();
port =Integer.valueOf(EsPropKit.get( "redis_port" ).trim());
timeout =Integer.valueOf(EsPropKit.get( "redis_timeout" ).trim());
password = null !=EsPropKit.get( "redis_password" )?EsPropKit.get( "redis_password" ).trim(): null ;
maxTotal =Integer.valueOf(EsPropKit.get( "redis_maxTotal" ).trim());
maxIdle =Integer.valueOf(EsPropKit.get( "redis_maxIdle" ).trim());
maxWait =Integer.valueOf(EsPropKit.get( "redis_maxWait" ).trim());
if (StrKit.notBlank(password) ){
redisPlugin= new RedisPlugin(defualtCacheName, host, port, timeout * 1000 , password);
} else {
redisPlugin= new RedisPlugin(defualtCacheName, host, port, timeout * 1000 );
}
redisPlugin.getJedisPoolConfig().setMaxTotal(maxTotal);
redisPlugin.getJedisPoolConfig().setMaxIdle(maxIdle);
redisPlugin.getJedisPoolConfig().setMaxWaitMillis(maxWait* 1000 );
return redisPlugin;
} catch (Exception e){
//todo
throw new RuntimeException( "init RedisPlugin config exception " ,e);
}
}
} |
5:RedisKt工具类使用
RedisKt继承了jfinal原生Cache,可直接使用jfinal所提供的所有api,另外可根据业务需求,扩展更多的api供使用。注:原生Cache所有api对数据的操作都采用了二进制字节进行存储。是否扩展使用原生jedis进行操作。
使用方法:RedisKit.use().set();
6:Cache API使用
cache api使用方法具体可查看cache 源码 里面各个方法已经有很清楚的中文注释
Redis 命令参考: http://redisdoc.com/