文档章节

使用Jedis操作redis

varchard
 varchard
发布于 2017/03/27 11:23
字数 740
阅读 57
收藏 0

使用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip

如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar,下载地址:http://files.cnblogs.com/liuling/commons-pool-1.5.4.jar.zip

 

package com.donghai.redis;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.junit.Before;
import org.junit.Test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;
public class RedisClient {

    private Jedis jedis;
    
    @Before
    public void setup(){
        //连接redis服务器 172.16.100.10:6379
        jedis = new Jedis("172.16.100.10", 6379);
        //如果有密码,需要认真
        //jedis.auth("admin");
    }
    
    //字符串存储
    @Test
    public void testString(){
        String rect = jedis.set("jk1", "jv1");
        System.out.println(rect);
        
        Long rectLong = jedis.append("jk2", "jv2"); //拼接
        System.out.println(rectLong);
        
        rectLong = jedis.del("jk1"); //删除
        System.out.println(rectLong);
        
        //设置多个键值对
        jedis.mset("name1", "password1", "name2", "password2", "name3", "password3", "age", "10");
        //进行加1操作
        jedis.incr("age");
        
    }
    
    @Test
    public void testMap(){
        Map<String, String> map = new HashMap<String, String>();
        map.put("name", "djoker");
        map.put("age", "12");
        map.put("qq", "123123");
        map.put("address", "xs");
        jedis.hmset("user", map);  //存入redis.使用hmset(mset已经被多个字符串存在占用了)
        
        List<String> rsmap = jedis.hmget("user", "name", "age", "qq", "address"); //取出多个值
        System.out.println(rsmap);
        
        jedis.hdel("user", "age"); //从map中删除一个键值对
        System.out.println(jedis.hmget("user", "age")); //取出map中的age键的值
        System.out.println(jedis.hlen("user")); //返回map的长度
        System.out.println(jedis.exists("user")); //判断map是否存在
        System.out.println(jedis.hkeys("user")); //取出map中所有键的列表
        System.out.println(jedis.hvals("user")); //取出map中所有值得列表
        
        Iterator iter = jedis.hkeys("user").iterator();
        while(iter.hasNext()){
            String key = (String)iter.next();
            System.out.println("key:" + key + " value:" + jedis.hmget("user", key));
            
            
        }
    }
    
    @Test
    public void testList(){
        jedis.del("java framework");
        System.out.println(jedis.lrange("java framework", 0, -1));
        //lpush向List左边添加
        jedis.lpush("java framework", "spring");
        jedis.lpush("java framework", "struts");
        jedis.lpush("java framework", "hibernate");
        //lrange取得List的范围 0代表第一位,-1代表最后一位
        System.out.println(jedis.lrange("java framework", 0, -1));
        //rpush向List左边添加
        jedis.del("java framework");
        jedis.rpush("java framework", "spring");
        jedis.rpush("java framework", "struts");
        jedis.rpush("java framework", "hibernate");
        System.out.println(jedis.lrange("java framework", 0, -1));
        
        
         SortingParams sortingParameters = new SortingParams();
        
        jedis.del("num");
        jedis.lpush("num", "1");
        jedis.lpush("num", "5");
        jedis.lpush("num", "2");
        jedis.lpush("num", "10");
        jedis.lpush("num", "8");
        System.out.println(jedis.lrange("num", 0, -1)); //未排序
        System.out.println(jedis.sort("num", sortingParameters.desc())); //排序,但是排序结果不会存入redis服务器
        
    }
    
    @Test
    public void testSet(){
        jedis.del("user");
        //添加
        jedis.sadd("user", "1111");
        jedis.sadd("user", "2222");
        jedis.sadd("user", "3333");
        jedis.sadd("user", "4444");
        //删除
        jedis.srem("user", "1111");
        System.out.println(jedis.smembers("user")); //所有的成员
        System.out.println(jedis.sismember("user", "1111")); //判断成员1111是否在user中
        System.out.println(jedis.srandmember("user"));   //随机从user中取出一个成员
        System.out.println(jedis.scard("user")); //返回user中的成员个数
        
    }
    
    public static void main(String[] args){
        
        
    }
}

采用链接池配置

package com.donghai.redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class RedisClientPool {

    private static String address = "172.16.100.10";
    
    private static int port = 6379;
    
    private static String auth = "admin";
    
    private static int MAX_ACTIVE = 1024;
    
    private static int MAX_IDLE = 200;
    
    private static int MAX_WAIT = 10000;
    
    private static int TIMEOUT = 10000;
    
    private static boolean TEST_ON__BORROW = true;
    
    private static JedisPool jedisPool = null;
    
    
    static{
        try{
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxActive(MAX_ACTIVE);
            config.setMaxIdle(MAX_IDLE);
            config.setMaxWait(MAX_WAIT);
            config.setTestOnBorrow(TEST_ON__BORROW);
            jedisPool = new JedisPool(config,address, port,TIMEOUT );
        } catch(Exception e){
            e.printStackTrace();
        }
    }
    
    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;
        }
    }
    
    public static void returnResource(final Jedis jedis){
        if(jedis != null){
            jedisPool.returnResource(jedis);
        }
    }
}

使用连接池配置测试

package com.donghai.redis;

import redis.clients.jedis.Jedis;

public class Client {

    public static void main(String[] args){
        //从连接池中获取Jedis
        Jedis jedis = RedisClientPool.getJedis();
        jedis.set("jedisPool-k", "jedisPool-v");
        //把Jedis放回到连接池中
        RedisClientPool.returnResource(jedis);
        
    }
    
}

 

© 著作权归作者所有

varchard
粉丝 6
博文 58
码字总数 19458
作品 0
程序员
私信 提问
征服 Redis + Jedis

用Memcached,对于缓存对象大小有要求,单个对象不得大于1MB,且不支持复杂的数据类型,譬如SET 等。基于这些限制,有必要考虑Redis! 相关链接: 征服 Redis 征服 Redis + Jedis 征服 Redi...

凯文加内特
2015/03/18
147
0
使用jedis连接单机和集群redis的两种方式

Redis服务器的部署方式可分为单机和集群的方式,使用Jedis的对应访问接口也相应不用。如何使用Jedis操作两种不同部署方式的Redis数据,以及在web工程里如何快速的切换两种不同的访问方式,是...

jimmywu911
2016/12/02
1K
3
spring-data-redis中JedisCluster不支持pipelined问题解决

摘要: 引言 了解Jedis的童鞋可能清楚,Jedis中JedisCluster是不支持pipeline操作的,如果使用了redis集群,在spring-boot-starter-data-redis中又正好用到的pipeline,那么会接收到Pipelin...

stys35
01/26
78
2
Redis应用学习(三)——Jedis客户端的简单使用介绍

Redis的Java客户端程序——Jedis 1. 在Redis的安装目录中redis-cli是一个Redis的Shell语言写的客户端,通过运行该客户端就可以实现一系列Redis操作,而如果要使用Java语言的Redis客户端,就必...

江左煤郎
2018/10/27
63
0
使用JedisPoolConfig时,returnResourceObject 与 returnBrokenResource

使用JedisPoolConfig时,returnResourceObject 与 returnBrokenResource 这2个方法各有什么问题,我可以这样使用吗? /** * 返还到连接池 * * @param pool * @param redis */ private static...

Yong008
2017/06/19
860
0

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
4
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
5
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
今天
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部