redis简介以及安装和配置
查看我网易云笔记 文档:6-Redis安装与配置.note
链接:http://note.youdao.com/noteshare?id=e41016b553359acd0b4d97a4a62fa538&sub=89A0AF7F3DDF477096CC0B5C290196A6
如果是采用docker-compose安装。配置和安装直接用下面的
Jedis连接
docker-compose.yml配置
version: '3'
services:
#redis
redis:
hostname: redis
image: redis:latest
container_name: redis
restart: unless-stopped
command: redis-server /etc/redis.conf # 启动redis命令
environment:
- TZ=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime:ro # 设置容器时区与宿主机保持一致
- /usr/local/docker/redis/data:/data
- /usr/local/docker/redis/redis.conf:/etc/redis.conf
ports:
- 6379:6379
引入依赖
<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-core -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.2.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
配置
在ClassPath(或者src/main/resources)的config目录下下新建redis.setting
#-------------------------------------------------------------------------------
# Redis客户端配置样例
# 每一个分组代表一个Redis实例
# 无分组的Pool配置为所有分组的共用配置,如果分组自己定义Pool配置,则覆盖共用配置
# 池配置来自于:https://www.cnblogs.com/jklk/p/7095067.html
#-------------------------------------------------------------------------------
#----- 默认(公有)配置
# 地址,默认localhost
host = localhost
# 端口,默认6379
port = 6379
# 超时,默认2000
timeout = 2000
# 连接超时,默认timeout
connectionTimeout = 2000
# 读取超时,默认timeout
soTimeout = 2000
# 密码,默认无
password =
# 数据库序号,默认0
database = 0
# 客户端名,默认"Hutool"
clientName = Hutool
# SSL连接,默认false
ssl = false;
#----- 自定义分组的连接
[custom]
# 地址,默认localhost
host = localhost
# 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
BlockWhenExhausted = true;
# 设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数)
evictionPolicyClassName = org.apache.commons.pool2.impl.DefaultEvictionPolicy
# 是否启用pool的jmx管理功能, 默认true
jmxEnabled = true;
# 是否启用后进先出, 默认true
lifo = true;
# 最大空闲连接数, 默认8个
maxIdle = 8
# 最小空闲连接数, 默认0
minIdle = 0
# 最大连接数, 默认8个
maxTotal = 8
# 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1
maxWaitMillis = -1
# 逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
minEvictableIdleTimeMillis = 1800000
# 每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
numTestsPerEvictionRun = 3;
# 对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断 (默认逐出策略)
SoftMinEvictableIdleTimeMillis = 1800000
# 在获取连接的时候检查有效性, 默认false
testOnBorrow = false
# 在空闲时检查有效性, 默认false
testWhileIdle = false
# 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
timeBetweenEvictionRunsMillis = -1
基本命令的使用
字符串(String)
jedis.set("age", "15");
jedis.get("age");
jedis.incr("age");// 实现自增 没有key的情况下值为0
jedis.append("age", "2");//追加字段
String age = jedis.substr("age", 0, 1);// 索引从0开始
列表(list)
jedis.lpush("list-key", "张三");
jedis.lpush("list-key", "李四");
jedis.lpush("list-key", "王五");
// 获取所有元素
List<String> lrange = jedis.lrange("list-key", 0, -1);
lrange.forEach(System.out::println);
// 裁剪元素
String ltrim = jedis.ltrim("list-key", 0, 2);
System.out.println(ltrim);OK
哈希(hash)
Map<String, String> map = new HashMap<>();
map.put("name", "张晓慧");
map.put("age", "19");
jedis.hmset("hash-key", map);
// 获取属性
List<String> hmget = jedis.hmget("hash-key", "age","name");
hmget.forEach(System.out::println);
// 把年龄加一岁
Long age = jedis.hincrBy("hash-key", "age", 1);
System.out.println(age);
// 检查key是否在散列中
Boolean age = jedis.hexists("hash-key", "age");
System.out.println(age); // true