Java 连接redis

118 篇文章 3 订阅
一、Java 连接redis

1.1 maven引入jar

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

1.2 连接示列

// 连接到 redis 服务
public static void connection() {
    //连接本地的 Redis 服务
    Jedis jedis = new Jedis("localhost");
    System.out.println("连接成功");
    //查看服务是否运行
    System.out.println("服务正在运行: "+jedis.ping());
}

1.3 字符串(String)

// Redis Java String(字符串) 实例
public static void string() {
    //连接本地的 Redis 服务
    Jedis jedis = new Jedis("localhost");
    System.out.println("连接成功");
    //设置 redis 字符串数据
    jedis.set("runoobkey", "www.runoob.com");
    // 获取存储的数据并输出
    System.out.println("redis 存储的字符串为: "+ jedis.get("runoobkey"));
}

1.4 哈希(Hash)

// Redis Java 哈希(hash) 实例
public static void hash() {
    Jedis jedis = new Jedis("localhost");

    jedis.hset("key", "field1", "value1");
    jedis.hset("key", "field2", "value2");
    jedis.hset("key", "field3", "value3");

    String value = jedis.hget("key", "field1");
    System.out.println("value:" + value);
}

1.5 列表(List)

// Redis Java List(列表) 实例
public static void list() {
    //连接本地的 Redis 服务
    Jedis jedis = new Jedis("localhost");
    System.out.println("连接成功");
    //存储数据到列表中
    jedis.lpush("site-list", "Runoob");
    jedis.lpush("site-list", "Google");
    jedis.lpush("site-list", "Taobao");
    // 获取存储的数据并输出
    List<String> list = jedis.lrange("site-list", 0 ,2);
    for(int i=0; i<list.size(); i++) {
        System.out.println("列表项为: "+list.get(i));
    }
}

1.6 集合(Set)

// Redis Java 无序集合(set) 实例
public static void set() {
    Jedis jedis = new Jedis("localhost");
    jedis.sadd("test","value1","value2");
    jedis.sadd("test","value3","value4");

    Set set = jedis.smembers("test");
    System.out.println(set);
}

1.有序集合(sorted Set)

// Redis Java 有序集合(zset) 实例
public static void zset() {
    Jedis jedis = new Jedis("localhost");
    jedis.zadd("zadd",3, "value3");
    jedis.zadd("zadd",1, "value1");
    jedis.zadd("zadd",2, "value2");

    Set set = jedis.zrevrange("zadd", 0, -1);
    System.out.println(set);
}

1.7 key

// Redis Java Keys 实例
public static void keys() {
    //连接本地的 Redis 服务
    Jedis jedis = new Jedis("localhost");
    System.out.println("连接成功");

    // 获取数据并输出
    Set<String> keys = jedis.keys("*");
    Iterator<String> it=keys.iterator() ;
    while(it.hasNext()){
        String key = it.next();
        System.out.println(key);
    }
}

1.8 其他方法

// expire用于设置key的过期时间
jedis.expire(key, 1000);

// 删除key
jedis.del(key);

// 关闭连接
jedis.close();
二、redis连接池
JedisPoolConfig poolConfig = new JedisPoolConfig();
// 最大空闲数
poolConfig.setMaxIdle(50);
// 最大连接数
poolConfig.setMaxTotal(100);
// 最大等待毫秒数
poolConfig.setMaxWaitMillis(20000);
// 使用配置创建连接池
JedisPool pool = new JedisPool(poolConfig, "localhost");
// 从连接池中获取单个连接
Jedis jedis = pool.getResource();
// 如果需要密码
//jedis.auth("password");
三、Java中使用哨兵模式
public static void sentinel() {
    JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
    jedisPoolConfig.setMaxTotal(10);
    jedisPoolConfig.setMaxIdle(5);
    jedisPoolConfig.setMinIdle(5);
    // 哨兵信息
    Set<String> sentinels = new HashSet<>(Arrays.asList(
            "192.168.11.128:26379",
            "192.168.11.129:26379",
            "192.168.11.130:26379"));
    // 创建连接池
    JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels,jedisPoolConfig,"123456");
    // 获取客户端
    Jedis jedis = pool.getResource();
    // 执行两个命令
    jedis.set("mykey", "myvalue");
    String value = jedis.get("mykey");
    System.out.println(value);
}
四、Spring使用哨兵模式
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
    <!-- 最大空闲数 -->
    <property name="maxIdle" value="50"></property>
    <!-- 最大连接数 -->
    <property name="maxTotal" value="100"></property>
    <!-- 最大等待时间 -->
    <property name="maxWaitMillis" value="20000"></property>
</bean>

<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
    <constructor-arg name="poolConfig" ref="poolConfig"></constructor-arg>
    <constructor-arg name="sentinelConfig" ref="sentinelConfig"></constructor-arg>
    <property name="password" value="123456"></property>
</bean>

<!-- JDK序列化器 -->
<bean id="jdkSerializationRedisSerializer" class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"></bean>

<!-- String序列化器 -->
<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>

<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
    <property name="connectionFactory" ref="connectionFactory"></property>
    <property name="keySerializer" ref="stringRedisSerializer"></property>
    <property name="defaultSerializer" ref="stringRedisSerializer"></property>
    <property name="valueSerializer" ref="jdkSerializationRedisSerializer"></property>
</bean>

<!-- 哨兵配置 -->
<bean id="sentinelConfig" class="org.springframework.data.redis.connection.RedisSentinelConfiguration">
    <!-- 服务名称 -->
    <property name="master">
        <bean class="org.springframework.data.redis.connection.RedisNode">
            <property name="name" value="mymaster"></property>
        </bean>
    </property>
    <!-- 哨兵服务IP和端口 -->
    <property name="sentinels">
        <set>
            <bean class="org.springframework.data.redis.connection.RedisNode">
                <constructor-arg name="host" value="192.168.11.128"></constructor-arg>
                <constructor-arg name="port" value="26379"></constructor-arg>
            </bean>
            <bean class="org.springframework.data.redis.connection.RedisNode">
                <constructor-arg name="host" value="192.168.11.129"></constructor-arg>
                <constructor-arg name="port" value="26379"></constructor-arg>
            </bean>
            <bean class="org.springframework.data.redis.connection.RedisNode">
                <constructor-arg name="host" value="192.168.11.130"></constructor-arg>
                <constructor-arg name="port" value="26379"></constructor-arg>
            </bean>
        </set>
    </property>
</bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书香水墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值