Redis(二)Jedis

1、Jedis

java操作redis数据库的工具,类似于jdbc

(1)快速入门

//1. 获取连接
	Jedis jedis = new Jedis("localhost",6379);//如果使用空参构造,默认值 "localhost",6379端口
//2. 操作
	jedis.set("username","zhangsan");
//3. 关闭连接
	jedis.close();
  • 出现的问题
    • redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.
      • 主要是因为redis设置了密码,需要:jedis.auth(“123456”);

(2)Jedis操作redis各种数据结构

<1>Jedis操作:字符串

  • 命令操作:字符串
    ● set(key , value):设置键值对
    ● get(key):获取值
    ● setex(key , time , value):设置time 秒后自动失效的 键值对:key - value
  • Jedis操作:字符串
		Jedis jedis=new Jedis("127.0.0.1",6378);
        jedis.set("username","123");
        System.out.println(jedis.get("username"));
        jedis.setex("activecode",20,"haha");        //20s后失效的键值对:activecode-haha
        System.out.println(jedis.get("haha"));

<2>Jedis操作:列表list

  • 命令操作:列表list
    ● 存储
    ○ lpush key value:将元素加到列表左侧
    ○ rpush key value:将元素加到列表右侧
    ● 获取
    ○ Irange key start end :范围获取
    ● 删除:
    ○ lpop key :删除列表最左边的元素,并将元素返回
    ○ rpop key:删除元素最右边的元素,并将元素返回
  • Jedis操作:列表list
        Jedis jedis=new Jedis("127.0.0.1",6378);
        jedis.lpush("mylist","val1","val2");    //从左边存
        jedis.rpush("mylist","val3","val4");   //从右边存
        List<String> mylist = jedis.lrange("mylist", 0, -1);///-1代表所有
        System.out.println(mylist);     //[val2, val1, val3, val4]
        //mylist的弹出
        jedis.lpop("mylist");   //弹出左边的值
        jedis.rpop("mylist");   //弹出右边的值
        List<String> mylist1 = jedis.lrange("mylist", 0, -1);
        System.out.println(mylist1);        //[val1, val3]

<3>Jedis操作:哈希map

  • 命令操作:哈希map
    ● 存储:hset key field value
    ● 获取:hget key field: 获取指定的field对应的值
    ○ hgetall key:获取所有的field和value
    ● 删除: hdel key field
  • Jedis操作:哈希map
        Jedis jedis=new Jedis("127.0.0.1",6378);
        jedis.hset("user","username","lisi");
        jedis.hset("user","age","23");
        jedis.hset("user","gender","男");

        String name = jedis.hget("user", "username");
        System.out.println(name);       //lisi
        Map<String, String> user = jedis.hgetAll("user");
        System.out.println(user);       //{gender=男, age=23, username=lisi}

<4>Jedis操作:set

  • 命令操作:set
    ● 存储:sadd key value
    ● 获取:smembers key:获取set集合的所有元素
    ● 删除:srem key value:删除set集合的某个元素
  • Jedis操作:set
        Jedis jedis=new Jedis("127.0.0.1",6378);
        jedis.sadd("myset","val1","val2");
        jedis.sadd("myset","val1");
        Set<String> myset = jedis.smembers("myset");
        System.out.println(myset);      //[val2, val1]

<5>Jedis操作:sortedset

  • 命令操作:sortedset
    ● 存储:zadd key score value
    ● 获取:zrange key start end [withscores]
    ● 删除:zrem key value
  • Jedis操作:sortedset
        Jedis jedis=new Jedis("127.0.0.1",6378);
        jedis.zadd("mysort",25,"val1");
        jedis.zadd("mysort",22,"val2");
        jedis.zadd("mysort",24,"val3");
        Set<String> mysort = jedis.zrange("mysort", 0, -1); //按照double的分数进行排序
        System.out.println(mysort);        // [val2, val3, val1]

2、Jedis连接池

(1)快速入门

  • 创建JedisPool连接池对象(可以设置配置对象)
  • 调用方法 getResource()方法获取Jedis连接
  • 使用jedis
  • 归还连接
        //0.创建配置对象
        JedisPoolConfig config=new JedisPoolConfig();
        config.setMaxTotal(50);
        config.setMaxIdle(10);

        //1.创建Jedis连接池对象
        JedisPool jedisPool=new JedisPool(config,"127.0.0.1",6378);
        //2.创建Jedis连接
        Jedis jedis = jedisPool.getResource();
        //3.使用Jedis
        jedis.set("key1","val1");
        System.out.println(jedis.get("key1"));
        //4.归还连接到连接池
        jedis.close();

3、JedisUtil工具类

  • 将jedis-all.properties配置文件放在resource目录下
#最大活动对象数     
	redis.pool.maxTotal=1000
#最大能够保持idel状态的对象数      
	redis.pool.maxIdle=100
#redis服务器的IP    
	redis.ip=127.0.0.1
#redis服务器的Port    
	redis.port=6378
/**
 * JedisPool工具类:
 *  加载配置文件,获取连接池参数
 *  提供获取连接的方法
 */
public class JedisPoolUtil {
    private static JedisPool jedisPool;
    static {
        //1.读取配置文件
        InputStream is = JedisPoolUtil.class.getClassLoader().getResourceAsStream("jedis-all.properties");
        //2.创建Properties对象
        Properties pro=new Properties();
        try {
            //3.Properties对象关联文件
            pro.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //4.获取配置文件内容
        JedisPoolConfig config=new JedisPoolConfig();
        config.setMaxTotal(new Integer(pro.getProperty("redis.pool.maxTotal")));
        config.setMaxIdle(Integer.parseInt(pro.getProperty("redis.pool.maxIdle")));
        String port = pro.getProperty("redis.port");
        String ip = pro.getProperty("redis.ip");
        //5.创建jedisPool
        jedisPool=new JedisPool(config,ip,Integer.parseInt(port));
    }
    public static Jedis getJedis(){
        return jedisPool.getResource();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值