String 字符串 List 列表 Hash 散列 Set 集合 Sorted Set 有序集合2 Jedis 介绍 jedis的2种使用方式:
-
通过单一连接方式使用,每次创建都会建立TCP连接,可适用于应用场景不太复杂的;
-
通过JedisPool连接池使用,连接池初始化后,每次连接从连接池中取,使用完放回,不用每次都新建TCP连接,开销较小,适用于较为复杂的使用场景,需要配置一些连接池参数。
3.1 引入依赖
redis.clients jedis 2.9.0
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 常用方法
// String jedis.set("name","LiMing"); jedis.get("name"); jedis.del("name");
// List jedis.lpush("user","LiMing"); jedis.lindex("user",1); jedis.lset("user",0,"DaBai"); jedis.lrange("user",0,2);
// Hash jedis.hset("age","LiMing","1"); jedis.hvals("age"); jedis.hexists("age","XiaoHong"); jedis.hgetAll("age"); jedis.hdel("age","LiMing"); jedis.hsetnx("age","ZhangSheng","20");
// Set 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崩溃。