我是靠谱客的博主 落后荔枝,最近开发中收集的这篇文章主要介绍Redis客户端之Jedis使用介绍,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Jedis是Redis官方推荐的Java连接开发工具。
Redis 默认是单机环境使用的。 数据量较大时需要shard(多机环境),这个时候要用ShardedJedis。 ShardedJedis是基于一致性哈希算法实现的分布式Redis集群客户端。

一、Jedis的使用
1、添加maven依赖

<dependency>
     <groupId>redis.clients</groupId>
     <artifactId>jedis</artifactId>
     <version>2.9.0</version>
</dependency>

2、Jedis使用方式
方式一:Redis单节点 + Jedis单例 (Redis单节点压力过重, Jedis单例存在并发瓶颈 ,不可用于线上!)

	Jedis jedis = new Jedis(host, port);
	jedis.auth(password);

方式二:Redis单节点 + JedisPool单节点连接池, (Redis单节点压力过重,负载和容灾比较差)

	JedisPoolConfig poolConfig = new JedisPoolConfig();
	poolConfig.setMaxTotal(30);// 最大连接数,连接全部用完,进行等待
	poolConfig.setMinIdle(5); // 最小空余数
	poolConfig.setMaxIdle(20); // 最大空余数
	poolConfig.setMaxWaitMillis(10000);         // 获取连接时的最大等待毫秒数(如果设置为阻塞时							BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间,  默认-1
    poolConfig.setTestOnBorrow(true);           // 在获取连接的时候检查有效性, 默认false
    poolConfig.setTestOnReturn(false);          // 调用returnObject方法时,是否进行有效检查
    poolConfig.setTestWhileIdle(true);          // Idle时进行连接扫描
    poolConfig.setTimeBetweenEvictionRunsMillis(30000);     // 表示idle object evitor两次扫描之间要sleep的毫秒数
    poolConfig.setNumTestsPerEvictionRun(10);               // 表示idle object evitor每次扫描的最多的对象数
    poolConfig.setMinEvictableIdleTimeMillis(60000);        // 表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义
    
	JedisPool pool = new JedisPool(poolConfig, host, port);
	Jedis jedis = pool.getResource();
	jedis.auth(password);

方式三: Redis分片(通过client端集群,一致性哈希方式实现) + Jedis多节点连接池,(Redis集群,负载和容灾较好, ShardedJedisPool一致性哈希分片,读写均匀,动态扩充)

	JedisPoolConfig poolConfig = new JedisPoolConfig();
	poolConfig.setMaxTotal(30);// 最大连接数,连接全部用完,进行等待
	poolConfig.setMinIdle(5); // 最小空余数
	poolConfig.setMaxIdle(20); // 最大空余数
	
	List<JedisShardInfo> jedisShardInfos = new LinkedList<JedisShardInfo>();
	JedisShardInfo jedisShardInfo = new JedisShardInfo(host);
	jedisShardInfos.add(jedisShardInfo);
	
	ShardedJedisPool shardedJedisPool = new ShardedJedisPool(poolConfig, jedisShardInfos);
	ShardedJedis shardedJedis = shardedJedisPool.getResource();
	shardedJedis .auth(password);

方式四:Redis集群;new JedisCluster(jedisClusterNodes);

3、jedis常见操作

(1) 对DB的操作

		jedis.select(0);   //切换到DB0

(2) 对key的操作

		jedis.flushDB();   //清除数据
        jedis.exists(key);   //判断某个键是否存在
        jedis.set(key, value);   //新增键值对
        jedis.keys("*").toString();   //查看系统中所有的键
        jedis.del(key);    //删除键
        jedis.expire(key, 5);   //设置键的过期时间(单位:秒)
        jedis.ttl(key);   //查看键的剩余生存时间
        jedis.persist(key);   //移除键的生存时间
        jedis.type(key);    //查看键所存储的值的类型
        jedis.get(key);    //查看键的值

(3) 对字符串的操作

		jedis.del(key);    //删除键
        jedis.get(key);    //获取键
        jedis.set(key, newValue));    //修改键的值
        jedis.append(key, value));    //在键 c后面加入值
        jedis.mset(key1, value1, key2, value2);    //增加多个键值对
        jedis.del(new String[]{key1, key2});    //删除多个键值对
        jedis.mget(key1, key2);    //获取多个键值对
        jedis.setnx(key, value001);     //新增键值对防止覆盖原先值
        jedis.setex(key, 2, value);     //新增键值对并设置有效时间
        jedis.getSet(key, value);    //获取原值,更新为新值
        jedis.getrange(key, 2, 5));    //截取key的值的字符串
        
        //整型和浮点型以字符串类型存储,但相对于普通的字符串类型数据会多一些特有的操作
		jedis.get(key);    //获取键的值
        jedis.incr(key);    //将键的值+1
        jedis.decr(key);    //将键的值-1
        jedis.incrBy(key, 2));    //将键的值加上整数2
        jedis.decrBy(key, 2));    //将键的值减去整数2

(4)对Hash的操作
(5)对list列表的操作
(6)对set集合的操作
(7)对zset(sorted set)有序集合的操作

未完待续。。。

最后

以上就是落后荔枝为你收集整理的Redis客户端之Jedis使用介绍的全部内容,希望文章能够帮你解决Redis客户端之Jedis使用介绍所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部