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 盘。

jfinal集成redis教程

二、安装Redis

1.这里下载的是Redis-x64-3.2.100版本,我的电脑是win7 64位,所以下载64位版本的,在运行中输入cmd,然后把目录指向解压的Redis目录。

1
2
G:
CD Redis-x64-3.2.100

jfinal集成redis教程




2、启动命令

redis-server redis.windows.conf,出现下图显示表示启动成功了。

jfinal集成redis教程




三、设置Redis服务

1、由于上面虽然启动了redis,但是只要一关闭cmd窗口,redis就会消失。所以要把redis设置成windows下的服务。

也就是设置到这里,首先发现是没用这个Redis服务的。


jfinal集成redis教程


2、设置服务命令

redis-server --service-install redis.windows-service.conf --loglevel verbose


jfinal集成redis教程



输入命令之后没有报错,表示成功了,刷新服务,会看到多了一个redis服务。

jfinal集成redis教程




3、常用的redis服务命令。

卸载服务:redis-server --service-uninstall

开启服务:redis-server --service-start

停止服务:redis-server --service-stop



Redis 客户端的基本语法为:

$ redis-cli

执行 PING 命令,该命令用于检测 redis 服务是否启动。

jfinal集成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 源码 里面各个方法已经有很清楚的中文注释

jfinal集成redis教程

     Redis 命令参考: http://redisdoc.com/