在Maven项目中如何操作redis数据库

一:缓存思想

二:数据类型

String类型

 应用场景: SETEX  验证码过期

SET    key value 				设置指定key的值
GET    key                      获取指定key的值
SETEX  key seconds value        设置指定key的值,并将 key 的过期时间设为 seconds 秒
SETNX  key value                只有在 key不存在时设置 key 的值

Hash类型

HSET     key field value            将哈希表 key 中的字段 field 的值设为 value
HGET     key field                  获取存储在哈希表中指定字段的值
HDEL     key field                  删除存储在哈希表中的指定字段
HKEYS    key                        获取哈希表中所有字段
HVALS    key                        获取哈希表中所有值
HGETALL  key                        获取在哈希表中指定 key 的所有字段和值

List类型

 特点:     有序、可重复
应用场景:  任务队列

LPUSH   key value1 [value2]         将一个或多个值插入到列表头部
LRANGE  key start stop              获取列表指定范围内的元素
RPOP    key                         移除并获取列表最后一个元素
LLEN    key                         获取列表长度
BRPOP   key1 [key2] timeout         移出并获取列表的最后一个元素如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

set类型

特点:       无序、不重复
应用场景:    黑名单 

SADD       key member1 [member2]                向集合添加一个或多个成员
SMEMBERS   key                                  返回集合中的所有成员
SCARD      key                                  获取集合的成员数
SINTER     key1 [key2]                          返回给定所有集合的交集
SUNION     key1 [key2]                          返回所有给定集合的并集
SDIFF      key1 [key2]                          返回给定所有集合的差集
SREM       key member1 [member2]                移除集合中一个或多个成员

zset类型

特点:     有序、去重的 
应用场景:  排行榜 

ZADD    key score1 member1 [score2 member2]     向有序集合添加一个或多个成员,或者更新已存在成员的 分数
ZRANGE  key start stop [WITHSCORES]             通过索引区间返回有序集合中指定区间内的成员
ZINCRBY key increment member                    有序集合中对指定成员的分数加上增量 increment
ZREM    key member [member ...]                 移除有序集合中的一个或多个成员

三:下面简单介绍一下在Spring项目中如何操作redis数据库

1)导包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2)配置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 #连接池中的最小空闲连接

3)使用

@Autowired
private RedisTemplate redisTemplate;

/**
 * 操作String类型数据
 */
@Test
public void testString(){
    redisTemplate.opsForValue().set("city123","shanghai");

    String value = (String) redisTemplate.opsForValue().get("city123");
    System.out.println(value);

}

序列化

redis 序列化配置

@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;
    }

}

使用spring - data -redis

String

@Test
public void testString() {
    redisTemplate.opsForValue().set("city", "beijing");

    String value = (String) redisTemplate.opsForValue().get("city");
    System.out.println(value);

    redisTemplate.opsForValue().set("key1", "value1", 10L, TimeUnit.SECONDS);

    Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("city", "nanjing");
    System.out.println(aBoolean);
}

Hash

@Test
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

@Test
public void testList() {
    ListOperations listOperations = redisTemplate.opsForList();

    //存值
    listOperations.leftPush("mylist", "a");
    listOperations.leftPushAll("mylist", "b", "c", "d");

    //取值  0  -1
    //  -1  代表最后一元素
    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

@Test
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

@Test
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);
    }
}

通用

@Test
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());
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值