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/