在java中操作redis

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

在普通项目中操作redis

1.导入maven坐标

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

2.打开redis在这里插入图片描述

如果redis-server闪退那就先打开redis-cli 输入shutdown再exit就好啦。
3.编写程序


import org.junit.Test;
import redis.clients.jedis.Jedis;

import java.util.Set;

/**
 * 使用Jedis操作Redis
 */
public class JedisTest {

    @Test
    public void testRedis(){
        //1 获取连接
        Jedis jedis = new Jedis("localhost",6379);
        
        //2 执行具体的操作
        jedis.set("username","xiaoming");

        String value = jedis.get("username");
        System.out.println(value);

        //jedis.del("username");

        jedis.hset("myhash","addr","bj");
        String hValue = jedis.hget("myhash", "addr");
        System.out.println(hValue);

        Set<String> keys = jedis.keys("*");
        for (String key : keys) {
            System.out.println(key);
        }

        //3 关闭连接
        jedis.close();
    }
}

在springboot中操作redis

  1. 导入坐标
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
  1. 编写yml文件
spring:
  application:
    name: springdataredis_demo
  #Redis相关配置
  redis:
    host: localhost
    port: 6379
    #password: 123456
    database: 0 #操作的是0号数据库
    jedis:
      #Redis连接池配置
      pool:
        max-active: 8 #最大连接数
        max-wait: 1ms #连接池最大阻塞等待时间
        max-idle: 4 #连接池中的最大空闲连接
        min-idle: 0 #连接池中的最小空闲连接
  1. 编写redis配置类目的是重写redis对于key的序列化方式
@Configuration
public class RedisConfig extends CachingConfigurerSupport {

    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {

        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();

        //默认的Key序列化器为JdkSerializationRedisSerializer
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());

        redisTemplate.setConnectionFactory(connectionFactory);

        return redisTemplate;
    }

}
  1. 编写代码

    引入对象

    @Autowired
        private RedisTemplate redisTemplate;
    
    - 操作String类型数据
    
    public void testString(){
            redisTemplate.opsForValue().set("city123","beijing");
    
            String value = (String) redisTemplate.opsForValue().get("city123");
            System.out.println(value);
    
            redisTemplate.opsForValue().set("key1","value1",10l, TimeUnit.SECONDS);
    
            Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("city1234", "nanjing");
            System.out.println(aBoolean);
        }
    
    - 操作Hash类型数据
    
    public void testHash(){
            HashOperations hashOperations = redisTemplate.opsForHash();
    
            //存值
            hashOperations.put("002","name","xiaoming");
            hashOperations.put("002","age","20");
            hashOperations.put("002","address","bj");
    
            //取值
            String age = (String) hashOperations.get("002", "age");
            System.out.println(age);
    
            //获得hash结构中的所有字段
            Set keys = hashOperations.keys("002");
            for (Object key : keys) {
                System.out.println(key);
            }
    
            //获得hash结构中的所有值
            List values = hashOperations.values("002");
            for (Object value : values) {
                System.out.println(value);
            }
        }
    
    
    - 操作List类型的数据
    
    public void testList(){
            ListOperations listOperations = redisTemplate.opsForList();
    
            //存值
            listOperations.leftPush("mylist","a");
            listOperations.leftPushAll("mylist","b","c","d");
    
            //取值
            List<String> mylist = listOperations.range("mylist", 0, -1);
            for (String value : mylist) {
                System.out.println(value);
            }
    
            //获得列表长度 llen
            Long size = listOperations.size("mylist");
            int lSize = size.intValue();
            for (int i = 0; i < lSize; i++) {
                //出队列
                String element = (String) listOperations.rightPop("mylist");
                System.out.println(element);
            }
        }
    
      
    
    - 操作Set类型的数据
    
    public void testSet(){
            SetOperations setOperations = redisTemplate.opsForSet();
    
            //存值
            setOperations.add("myset","a","b","c","a");
    
            //取值
            Set<String> myset = setOperations.members("myset");
            for (String o : myset) {
                System.out.println(o);
            }
    
            //删除成员
            setOperations.remove("myset","a","b");
    
            //取值
            myset = setOperations.members("myset");
            for (String o : myset) {
                System.out.println(o);
            }
    
        }
    
    - 操作ZSet类型的数据
    
     public void testZset(){
            ZSetOperations zSetOperations = redisTemplate.opsForZSet();
    
            //存值
            zSetOperations.add("myZset","a",10.0);
            zSetOperations.add("myZset","b",11.0);
            zSetOperations.add("myZset","c",12.0);
            zSetOperations.add("myZset","a",13.0);
    
            //取值
            Set<String> myZset = zSetOperations.range("myZset", 0, -1);
            for (String s : myZset) {
                System.out.println(s);
            }
    
            //修改分数
            zSetOperations.incrementScore("myZset","b",20.0);
    
            //取值
            myZset = zSetOperations.range("myZset", 0, -1);
            for (String s : myZset) {
                System.out.println(s);
            }
    
            //删除成员
            zSetOperations.remove("myZset","a","b");
    
            //取值
            myZset = zSetOperations.range("myZset", 0, -1);
            for (String s : myZset) {
                System.out.println(s);
            }
        }
    
    
    - 通用操作针对不同的数据类型都可以操作
    
     public void testCommon(){
            //获取Redis中所有的key
            Set<String> keys = redisTemplate.keys("*");
            for (String key : keys) {
                System.out.println(key);
            }
    
            //判断某个key是否存在
            Boolean itcast = redisTemplate.hasKey("itcast");
            System.out.println(itcast);
    
            //删除指定key
            redisTemplate.delete("myZset");
    
            //获取指定key对应的value的数据类型
            DataType dataType = redisTemplate.type("myset");
            System.out.println(dataType.name());
    
        }
    }
    
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Javaredis