1 Redis基本数据类型:
String 字符串
List 列表
Hash 散列
Set 集合
Sorted Set 有序集合
2 Jedis 介绍
jedis的2种使用方式:
-
通过单一连接方式使用,每次创建都会建立TCP连接,可适用于应用场景不太复杂的; -
通过JedisPool连接池使用,连接池初始化后,每次连接从连接池中取,使用完放回,不用每次都新建TCP连接,开销较小,适用于较为复杂的使用场景,需要配置一些连接池参数。
3 项目中使用
3.1 引入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
3.2 单一连接使用
Jedis jedis = new Jedis(ip,port,timeout);
3.3 JedisPool 连接池
public class RedisUtil {
private static Logger logger = Logger.getLogger(RedisUtil.class);
private static String ADDR = "xx.xx.xx.xx";
private static int PORT = 6379;
private static int MAX_TOTAL = 8;
private static int MIN_IDLE=0;
private static int MAX_IDLE = 1000;
private static int MAX_WAIT = -1;
private static int TIMEOUT = 10000;
private static boolean BLOCK_WHEN_EXHAUSTED = true;
private static String EVICTION_POLICY_CLASSNAME="org.apache.commons.pool2.impl.DefaultEvictionPolicy";
private static boolean JMX_ENABLED=true;
private static String JMX_NAME_PREFIX="pool";
private static boolean LIFO=true;
private static long MIN_EVICTABLE_IDLE_TIME_MILLIS=1800000L;
private static long SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS=1800000L;
private static int NUM_TESTS_PER_EVICYION_RUN=3;
private static boolean TEST_ON_BORROW = false;
private static boolean TEST_WHILEIDLE=false;
private static long TIME_BERWEEN_EVICTION_RUNS_MILLIS=-1;
private static JedisPool jedisPool = null;
static {
try {
JedisPoolConfig config = new JedisPoolConfig();
config.setBlockWhenExhausted(BLOCK_WHEN_EXHAUSTED);
config.setEvictionPolicyClassName(EVICTION_POLICY_CLASSNAME);
config.setJmxEnabled(JMX_ENABLED);
config.setJmxNamePrefix(JMX_NAME_PREFIX);
config.setLifo(LIFO);
config.setMaxIdle(MAX_IDLE);
config.setMaxTotal(MAX_TOTAL);
config.setMaxWaitMillis(MAX_WAIT);
config.setMinEvictableIdleTimeMillis(MIN_EVICTABLE_IDLE_TIME_MILLIS);
config.setMinIdle(MIN_IDLE);
config.setNumTestsPerEvictionRun(NUM_TESTS_PER_EVICYION_RUN);
config.setSoftMinEvictableIdleTimeMillis(SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS);
config.setTestOnBorrow(TEST_ON_BORROW);
config.setTestWhileIdle(TEST_WHILEIDLE);
config.setTimeBetweenEvictionRunsMillis(TIME_BERWEEN_EVICTION_RUNS_MILLIS);
jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT);
} catch (Exception e) {
logger.error("Redis连接池 初始化异常" + e);
e.printStackTrace();
}
}
public static Jedis getJedis() {
return jedisPool.getResource();
}
public static void closeJedis(Jedis jedis) {
jedis.close();
}
}
3.4 常用方法
jedis.set("name","LiMing");
jedis.get("name");
jedis.del("name");
jedis.lpush("user","LiMing");
jedis.lindex("user",1);
jedis.lset("user",0,"DaBai");
jedis.lrange("user",0,2);
jedis.hset("age","LiMing","1");
jedis.hvals("age");
jedis.hexists("age","XiaoHong");
jedis.hgetAll("age");
jedis.hdel("age","LiMing");
jedis.hsetnx("age","ZhangSheng","20");
jedis.sadd("num","1");
jedis.smembers("num");
jedis.scard("num");
jedis.sismember("num","2");
jedis.srem("num","2");
Sorted Set 使用与Set相近
4 可视化工具推荐
Another Redis Desktop Manager 可自行选择版本下载,这是我目前使用起来相对较为方便的Redis可视化工具 PS: 1 、 在代码开发阶段,可将Redis的配置文件中 bind 127.0.0.1 注释掉,后续可根据实际部署需求决定是否删除该注释。 2、 一般设置仅本机访问时,redis连接可不设置密码,放在外网的Redis服务,若短暂启用远程访问,建议设置个密码,否则容易被攻击,造成内存紧张,redis崩溃。
|