redis杂记(二) --jedis
来源:互联网 发布:淘宝耳机店推荐 编辑:程序博客网 时间:2024/06/05 07:21
1、jedis
在java中操作数据库redis
2、环境
首先要导入JAR:
jedis-2.9.0.jar commons-pool2-2.4.2.jar
maven工程下pom.xml文件中配置:
<!-- redis jar包 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
3、redis操作string
public class RedisTest { // 日志 private transient static final Logger log = Logger.getLogger(RedisUtils.class); // 连接 private Jedis jedis; // 连接服务器(启动) @Before public void setUp(){ jedis = new Jedis("127.0.0.1",6379); } //########## redis 操作 string ###########// @Test public void string(){ //-----添加数据---------- jedis.set("name","Tom"); log.info(jedis.get("name")); // 拼接 jedis.append("name", " is my lover"); log.info(jedis.get("name")); //删除某个键 jedis.del("name"); log.info(jedis.get("name")); //设置多个键值对(key,value,.....) jedis.mset("name","liuling","age","20","qq","476X-XX777XXX"); //进行加1操作 jedis.incr("age"); log.info(jedis.get("name") + " & " + jedis.get("age") + " & " + jedis.get("qq")); } }
测试结果:
4、redis操作map
//########## redis 操作 map ###########// @Test public void map() { //-----添加数据---------- Map<String, String> map = new HashMap<String, String>(); map.put("name", "sonny"); map.put("age", "22"); map.put("qq", "123-456XXXX"); // 存map jedis.hmset("user",map); // 获取所以的key的value List<String> rsmap = jedis.hmget("user", "name", "age", "qq"); log.info(rsmap); //删除map中的某个键值 jedis.hdel("user","age"); log.info(jedis.hmget("user", "age")); //因为删除了,所以返回的是null log.info(jedis.hlen("user")); //返回key为user的键中存放的值的个数 log.info(jedis.exists("user"));//是否存在key为user的记录 返回true log.info(jedis.hkeys("user"));//返回map对象中的所有key log.info(jedis.hvals("user"));//返回map对象中的所有value Iterator<String> iter=jedis.hkeys("user").iterator(); while (iter.hasNext()){ String key = iter.next(); log.info(key+":"+jedis.hmget("user",key)); } }
测试结果:
5、redis操作list
//########## redis 操作 list ###########// @Test public void list(){ //开始前,先移除所有的内容 jedis.del("framework"); // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有 log.info(jedis.lrange("framework",0,-1)); // 左边添加 jedis.lpush("framework","spring"); jedis.lpush("framework","springMVC"); jedis.lpush("framework","mybatis"); log.info(jedis.lrange("framework",0,-1)); // 左边弹出 jedis.lpop("framework"); log.info(jedis.lrange("framework",0,-1)); // 右边添加 //jedis.del("framework"); jedis.rpush("framework","spring"); jedis.rpush("framework","springMVC"); jedis.rpush("framework","mybatis"); log.info(jedis.lrange("framework",0,-1)); // 右边弹出 jedis.rpop("framework"); log.info(jedis.lrange("framework",0,-1)); // 长度 log.info("长度:"+jedis.llen("framework")); //获取列表key索引为index的值 log.info(jedis.lindex("framework", 1)); //注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的) jedis.del("a"); jedis.rpush("a", "1"); jedis.lpush("a","6"); jedis.lpush("a","3"); jedis.lpush("a","9"); // 输出 log.info(jedis.lrange("a",0,-1)); // 排序(原list不变) log.info(jedis.sort("a")); log.info(jedis.lrange("a",0,-1)); }
测试结果:
6、redis操作set
//########## redis 操作 set ###########// @Test public void set(){ //添加 jedis.sadd("people","曹操"); jedis.sadd("people","曹丕"); jedis.sadd("people","曹冲"); jedis.sadd("people","曹植"); jedis.sadd("people","曹昂"); // 输出所有值 log.info(jedis.smembers("people")); //移除 jedis.srem("people","曹昂"); log.info(jedis.smembers("people")); //判断 曹冲 是否是user集合的元素 log.info(jedis.sismember("people", "曹冲")); // 随机获取值 log.info(jedis.srandmember("people")); //返回集合的元素个数 log.info(jedis.scard("people")); }
测试结果:
7、redis操作sorted set
//########## redis 操作 sorted set ###########// @Test public void sortSet(){ HashMap<String, Double> map = new HashMap<String, Double>(); map.put("Tom", 67.9); map.put("jack", 77.5); map.put("mary", 69.6); map.put("sunny", 56.5); map.put("daliy", 78.4); map.put("ristom", 91.8); // 添加 jedis.zadd("studentScore", map); // 获取所有的元素 log.info(jedis.zrange("studentScore", 0, -1)); // 查询key下的某一个元素的score log.info("元素为mary的成绩:"+jedis.zscore("studentScore", "mary")); log.info("----- 小到大输出 -----"); // 获取所有的,并且带有scores(默认:小到大输出) Set<Tuple> scores = jedis.zrangeWithScores("studentScore", 0, -1); // 遍历输出 元素+score Iterator<Tuple> iterator = scores.iterator(); while (iterator.hasNext()) { Tuple tuple = iterator.next(); // 元素 + score log.info(tuple.getElement()+" : "+tuple.getScore()); } log.info("----- 大到小输出 -----"); // 获取所有的,并且带有scores(默认:大到小输出) Set<Tuple> scores2 = jedis.zrevrangeWithScores("studentScore", 0, -1); Iterator<Tuple> iterator2 = scores2.iterator(); while (iterator2.hasNext()) { Tuple tuple = iterator2.next(); // 元素 + score log.info(tuple.getElement()+" : "+tuple.getScore()); } // 获取 key 中元素个数 log.info("key 中元素个数: "+jedis.zcard("studentScore")); // 删除key中的元素ristom jedis.zrem("studentScore", "ristom"); log.info(jedis.zrange("studentScore", 0, -1)); log.info("删除key中ristom元素后的个数: "+jedis.zcard("studentScore")); }
测试结果:
8、使用JedisPool连接池
8.1、工具类
RedisPoolUtil.java
package Java.Redis;import org.apache.log4j.Logger;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;public class RedisPoolUtil { //Redis服务器IP private static String HOST = "127.0.0.1"; //Redis的端口号 private static int PORT = 6379; //可用连接实例的最大数目,默认值为8; //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。 private static int MAX_ACTIVE = 1024; //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。 private static int MAX_IDLE = 200; //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException; private static long MAX_WAIT = 10000; private static int TIMEOUT = 10000; //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的; private static boolean TEST_ON_BORROW = true; // reids连接池 private static JedisPool jedisPool = null; // 日志 private transient static final Logger log = Logger.getLogger(RedisPoolUtil.class); /** * 初始化Redis连接池 */ static { try { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxIdle(MAX_IDLE); config.setMaxTotal(MAX_ACTIVE); config.setMaxWaitMillis(MAX_WAIT); config.setTestOnBorrow(TEST_ON_BORROW); jedisPool = new JedisPool(config, HOST, PORT, TIMEOUT); log.info("从连接池中获取jedis成功 !!"); } catch (Exception e) { e.printStackTrace(); log.error("从连接池中获取jedis失败 !!"); } } /** * 获取Jedis实例 * @return */ public synchronized static Jedis getJedis() { try { if (jedisPool != null) { Jedis resource = jedisPool.getResource(); return resource; } else { return null; } } catch (Exception e) { e.printStackTrace(); return null; } }}
8.2、测试
@Test public void redisPoolTest(){ Jedis jedis = RedisPoolUtil.getJedis(); log.info("redis-ping: "+jedis.ping()); // 输出 redis中的所有key log.info(jedis.keys("*")); }
测试结果:
阅读全文
1 0
- redis杂记(二) --jedis
- redis的java客户端jedis(二)jedis基本操作
- Redis学习(二)Jedis入门
- Redis实战之征服 Redis + Jedis + Spring (二)
- Redis实战之征服 Redis + Jedis + Spring (二)
- Redis实战之征服 Redis + Jedis + Spring (二)
- java 操作Redis string 命令 实例(Jedis) (二)
- 通过Jedis客户端连接不到redis(二)
- redis学习日志【二、redis+jedis】
- redis (jedis API)
- Redis java(jedis)
- 浅析Redis(Jedis)
- Jedis操作redis(转)
- Jedis操作redis(转)
- Redis 之 Jedis(1)
- Redis数据类型操作。(Jedis)
- Redis笔记(使用Jedis)
- redis jedis
- 判断 Map 中是否包含指定的 key 和 value
- 深度学习资源
- 超级淘的安全性,科普一下超级淘到底有多安全
- Java多线程学习(吐血超详细总结)
- C#控件及常用属性整理【详细版】
- redis杂记(二) --jedis
- PAT 甲级 1004. Counting Leaves
- 博弈模板(转载)
- EChart.js 简单入门
- struts2运行原理
- 在springMVC的web.xml中,DispatcherServlet使用/和/*的区别
- the server responded with a status of 404 (Not Found)
- JavaScript获取当前根目录
- 前端常用网站收藏(持续更新中。。。)