Jedis

一、键操作:

二、字符串操作:

三、整数和浮点数操作:

四、列表(List)操作:

五、集合(Set)操作:

 六、哈希(Hash)操作:

七、有序集合(Zsort)操作:

 八、排序操作:

Java 连接 MySql 我们有 mysql-connector ,连接 Redis 我们有 jedis。

九、实例

引入依赖

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

对应的是这两个 jar 包:

 使用 Jedis 提供的 API

package com.qjl.pems.test;
import java.util.Set;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;

/**
 * 类描述:测试Redis的客户端Jedis
 */
public class JedisTest {

    /**
     * 测试与redis的连通性
     */
    @Test
    public void testPing() {
        Jedis jedis = new Jedis("192.168.198.130", 6379);
        System.out.println(jedis.ping());
        jedis.close();
    }

    /**
     * 测试redis常用api
     */
    @Test
    public void testRedisAPI() {
        Jedis jedis = new Jedis("192.168.198.130", 6379);
//      String info = jedis.info("replication");
//      System.out.println(info);
        jedis.set("k1", "v1");
        jedis.set("k2", "v2");
        jedis.set("k3", "v3");
        System.out.println(jedis.get("k2"));

        Set<String> sets = jedis.keys("*");
        System.out.println(sets.size());
        jedis.close();
    }

    /**
     * 演示主从复制
     */
    @Test
    public void testMasterSlave() {
        Jedis jedisM = new Jedis("192.168.198.130", 6379);
        Jedis jedisS = new Jedis("192.168.198.130", 6380);

        jedisS.slaveof("192.168.198.130", 6379);
        jedisM.set("name", "qujianlei");
        String result = jedisS.get("name");
        System.out.println(result);
        jedisM.close();
        jedisS.close();
    }

    /**
     * 演示事务
     */
    @Test
    public void testTransaction() {
        Jedis jedis = new Jedis("192.168.198.130", 6379);
        jedis.set("balanceA", "100"); // A账户可用余额
        jedis.set("balanceB", "220"); // B账户可用余额

        // 互斥锁(锁key)
        jedis.watch("balanceA");

        System.out.println("=====开始转账 A-->B 50 =====");

        Transaction tx = jedis.multi();

        tx.decrBy("balanceA", 50);
        tx.incrBy("balanceB", 50);

        tx.exec();

        System.out.println("=====转账结束=====");
        // 解锁全部被watch的key
        jedis.unwatch();

        System.out.println("======开始取款=====");
        System.out.println("A账户可用余额:" + jedis.get("balanceA"));
        System.out.println("B账户可用余额:" + jedis.get("balanceB"));

        jedis.close();
    }
}

jedis 作为一个数据库同样也有数据库连接池 JedisPool,封装了一个简单的获取 Jedis 连接池的工具类(单例模式):

package com.qjl.pems.test;

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

public class JedisPoolUtil {

    private volatile static JedisPool JEDIS_POOL = null;

    private JedisPoolUtil() {}

    public static JedisPool getJedisPool() {
        if (JEDIS_POOL == null) {
            synchronized(JedisPoolUtil.class) {
                if (JEDIS_POOL == null) {
                    JedisPoolConfig poolConfig = new JedisPoolConfig();
                    poolConfig.setMaxTotal(500); // 500个连接
                    poolConfig.setMaxIdle(32); // 最大的空闲连接
                    poolConfig.setMaxWaitMillis(100 * 1000); // 最长的等待时间
                    poolConfig.setTestOnBorrow(true); // 获得一个jedis连接时检测可用性

                    JEDIS_POOL = new JedisPool(poolConfig, "192.168.198.130", 6379);
                }
            }
        }
        return JEDIS_POOL;
    }   
}

测试类如下:

package com.qjl.pems.test;

import java.util.Set;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.Transaction;

/**
 * 类描述:测试Redis的客户端Jedis
 */
public class JedisTest {

    /**
     * 测试jedis连接池
     */
    @Test
    public void testJedisPool() {
        // 1.获取连接池
        JedisPool jedisPool = JedisPoolUtil.getJedisPool();
        // 2.获取某个连接
        Jedis jedis = jedisPool.getResource();
        // 3.设置键值
        jedis.slaveofNoOne(); // 成为 master
        jedis.set("a", "b");
        // 4.获取键对应的值
        System.out.println(jedis.get("a"));
    }

}

转载:https://blog.csdn.net/zhangguanghui002/article/details/78770071

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值