Redis之jedis的使用

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 Redis之jedis的使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

引入依赖

  <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>compile</scope>
        </dependency>

Jedis–单机版

public class JedisDemoTest {

	private Jedis jedis;

	@Before
	public void startBefore() {
		 //创建Jedis对象 需要指定服务端的ip及端口
        jedis = new Jedis("127.0.0.1", 6379);
        //权限认证
        //jedis.auth("123456");
        jedis.ping();
	}
}

redis存储字符串

@Test
    public void setString() {
        jedis.setex("name", 20, "小白");
        String value = jedis.get("name");
        System.out.println(value);

        //拼接
        jedis.append("name", " , 你好.");
        System.out.println(jedis.get("name"));

        //删除某个键
        jedis.del("name");
        System.out.println(jedis.get("name"));

        //设置多个键值对
        jedis.mset("name", "小白", "age", "20");
        //进行加1操作
        jedis.incr("age");
        System.out.println(jedis.get("name") + "-" + jedis.get("age"));
        //关闭Jedis
        jedis.close();
    }

redis操作Map

    @Test
    public void setMap() {
        Map<String, String> map = new HashMap<>();
        map.put("name", "小白");
        map.put("age", "20");
        jedis.hmset("user", map);

        //取值
        List<String> rsmap = jedis.hmget("user", "name", "age");
        System.out.println(rsmap);

        //删除map中的某个键值
        jedis.hdel("user", "age");
        //返回null
        System.out.println(jedis.hmget("user", "age"));
        //返回key为user的键中存放的值的个数
        System.out.println(jedis.hlen("user"));
        //是否存在key为user的记录
        System.out.println(jedis.exists("user"));
        //返回map对象中的所有key
        System.out.println(jedis.hkeys("user"));
        //返回map对象中的所有value
        System.out.println(jedis.hvals("user"));
        //迭代key
        Iterator<String> iter = jedis.hkeys("user").iterator();
        while (iter.hasNext()) {
            String key = iter.next();
            System.out.println(key + ":" + jedis.hmget("user", key));
        }
        //关闭Jedis
        jedis.close();
    }

jedis操作List

    @Test
    public void setList() {
        jedis.lpush("list", "小白");
        jedis.lpush("list", "大白");
        jedis.lpush("list", "白白");

        //lrange:按范围取,第一个是key,第二个是起始位置,第三个是结束位置,-1表示取得所有
        System.out.println(jedis.lrange("list", 0, -1));

        jedis.del("list");
        jedis.rpush("list", "小白");
        jedis.rpush("list", "大白");
        jedis.rpush("list", "白白");
        System.out.println(jedis.lrange("list", 0, -1));
        //关闭Jedis
        jedis.close();
    }

jedis操作Set

    @Test
    public void setSet() {
        jedis.sadd("user","小白");
        jedis.sadd("user","大白");
        jedis.sadd("user","白白");

        //移除
        jedis.srem("user","大白");
        //获取所有加入的value
        System.out.println(jedis.smembers("user"));
        //判断小白是否是user集合的元素
        System.out.println(jedis.sismember("user", "小白"));
        //返回集合中一个或多个随机数
        System.out.println(jedis.srandmember("user"));
        //返回集合的元素个数
        System.out.println(jedis.scard("user"));
        //关闭Jedis
        jedis.close();
    }

jedis操作sortedset

    @Test
    public void sort() {
        jedis.del("sort");
        jedis.rpush("sort", "1");
        jedis.lpush("sort", "5");
        jedis.lpush("sort", "3");
        jedis.lpush("sort", "9");
        //[9, 3, 5, 1]
        System.out.println(jedis.lrange("sort", 0, -1));
        //[1, 3, 5, 9]
        System.out.println(jedis.sort("sort"));
        //[9, 3, 5, 1]
        System.out.println(jedis.lrange("sort", 0, -1));
        //关闭Jedis
        jedis.close();
    }

Jedis–单机版使用连接池

直接测试

	private Jedis jedis;

    @Before
    public void startBefore() {
         // 创建连接池配置对象
        JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();
        // 设置最大连接数,默认值8
        jedisPoolConfig.setMaxIdle(5);
        // 设置最大空闲数,默认值8
        jedisPoolConfig.setMaxIdle(5);
        // 设置最小空闲数,默认值0
        jedisPoolConfig.setMinIdle(0);
        // 设置等待时间 ms
        jedisPoolConfig.setMaxWaitMillis(100);
        //创建一个JedisPool对象 指定服务端的ip及端口。
        JedisPool jedisPool = new JedisPool(jedisPoolConfig,"127.0.0.1", 6379,100,"123456");
        //从JedisPool中获得Jedis对象
        jedis = jedisPool.getResource();
        
        //操作完毕后关闭jedis对象,连接池回收资源
        // jedis.close();
        //关闭JedisPool对象
        //jedisPool.close();
    }

    @Test
    public void setString() {
        jedis.setex("name", 20, "小白");
        String value = jedis.get("name");
        System.out.println(value);
        //关闭Jedis
        jedis.close();
       }

集成Spring

	<!-- 配置单机版的连接 -->
	<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
		<constructor-arg name="host" value="127.0.0.1"></constructor-arg>
		<constructor-arg name="port" value="6379"></constructor-arg>
	</bean>
    @Autowired
    private JedisPool jedisPool;

    public String set(String key, String value) {
        Jedis jedis = jedisPool.getResource();
        String result = jedis.set(key, value);
        jedis.close();
        return result;
    }

Jedis– 集群版

直接测试

    private JedisCluster jedis;

    @Before
    public void startBefore() {
            //添加集群的服务节点Set集合
            Set<HostAndPort> hostAndPortsSet = new HashSet<HostAndPort>();
            //添加节点
            hostAndPortsSet.add(new HostAndPort("127.0.0.1", 6379));
            hostAndPortsSet.add(new HostAndPort("127.0.0.1", 6380));
            hostAndPortsSet.add(new HostAndPort("127.0.0.1", 6381));

            //Jedis连接池配置
            JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
            //最大空闲连接数, 默认8个
            jedisPoolConfig.setMaxIdle(100);
            //最大连接数, 默认8个
            jedisPoolConfig.setMaxTotal(500);
            //最小空闲连接数, 默认0
            jedisPoolConfig.setMinIdle(0);
            //获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间,  默认-1
            jedisPoolConfig.setMaxWaitMillis(2000);
            //对拿到的connection进行validateObject校验
            jedisPoolConfig.setTestOnBorrow(true);
            jedis = new JedisCluster(hostAndPortsSet, jedisPoolConfig);

            //关闭JedisCluster对象。
            //jedis.close();
    }

    @Test
    public void setString() {
        jedis.setex("name", 20, "小白");
        String value = jedis.get("name");
        System.out.println(value);
        //关闭Jedis
        jedis.close();
       }

集成Spring

<!-- 集群版的配置 -->
	<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
		<constructor-arg>
			<set>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="127.0.0.1"></constructor-arg>
					<constructor-arg name="port" value="6379"></constructor-arg>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="127.0.0.1"></constructor-arg>
					<constructor-arg name="port" value="6380"></constructor-arg>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="127.0.0.1"></constructor-arg>
					<constructor-arg name="port" value="6381"></constructor-arg>
				</bean>
			</set>
		</constructor-arg>
	</bean>

@Autowired
	private JedisCluster jedisCluster;

	public String set(String key, String value) {
		return jedisCluster.set(key, value);
	}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/137161.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!