Redis数据类型以及应用场景

Redis支持五种数据类型:

字符串(String)

哈希(Hash)

列表(List)

集合(Set)

有序集合(Sorted Set)

1. String类型

String类型是Redis最基本的数据类型,它可以存储任何形式的字符串,包括数字、字母、符号等。使用场景包括缓存、计数器、计分器等。

常用命令

  • SET key value:设置key对应的值为value。
  • GET key:返回key对应的值,如果key不存在,则返回null。
  • DEL key:删除指定的key。

Spring Boot代码示例

单机版Redis配置

在pom.xml中添加redis依赖


    org.springframework.boot
    spring-boot-starter-data-redis

在application.ymls配置文件中添加以下代码:

spring:
  #redis配置文件
  redis:
    host: 192.168.220.128 #redis所在服务器IP地址
    port: 6379 #端口号。默认6379
    password: 123456 #连接密码,配置文件中设置

 RedisTemplate操作Redis

@Component
public class RedisService {
    
    @Autowired
    private RedisTemplate redisTemplate;
    
    public void set(String key, Object value) {
        //添加数据
        redisTemplate.opsForValue().set(key, value);
    }
    
    public Object get(String key) {
        //根据key获取数据
        return redisTemplate.opsForValue().get(key);
    }
    
    public void delete(String key) {
        //根据key删除数据
        redisTemplate.delete(key);
    }
}

2. List类型

List类型是Redis中的一个链表结构,它可以存储多个字符串元素,且每个元素都有一个索引值,支持从两端进行插入、删除、查找等操作。使用场景包括秒杀、抢购、队列等。

常用命令

  • LPUSH key value1 [value2 ...]:从列表的左侧添加一个或多个元素。
  • RPUSH key value1 [value2 ...]:从列表的右侧添加一个或多个元素。
  • LPOP key:从列表的左侧移除并返回第一个元素。
  • RPOP key:从列表的右侧移除并返回最后一个元素。
  • LRANGE key start stop:返回列表中指定范围内的元素。

Spring Boot代码示例

@Component
public class RedisService {
    
    @Autowired
    private RedisTemplate redisTemplate;
    
    public void leftPush(String key, Object value) {
        //将 value 插入到 key 对应的列表的头部。
        redisTemplate.opsForList().leftPush(key, value);
    }
    
    public void rightPush(String key, Object value) {
        //将 value 插入到 key 对应的列表的尾部。
        redisTemplate.opsForList().rightPush(key, value);
    }
    
    public Object leftPop(String key) {
        //从 key 对应的列表的头部删除并返回一个元素。
        return redisTemplate.opsForList().leftPop(key);
    }
    
    public Object rightPop(String key) {
        //从 key 对应的列表的尾部删除并返回一个元素。
        return redisTemplate.opsForList().rightPop(key);
    }
    
    public List range(String key, long start, long end) {
        //返回列表中指定范围内的元素。
        return redisTemplate.opsForList().range(key, start, end);
    }
}
 
  

3. Set类型

Set类型是Redis中的一个无序集合,它可以存储一组字符串元素,并且每个元素都是唯一的。使用场景包括社交网络、博客评论等。

常用命令

  • SADD key member1 [member2 ...]:向集合中添加一个或多个元素。
  • SMEMBERS key:返回集合中的所有元素。
  • SISMEMBER key member:判断元素是否在集合中。

Spring Boot代码示例

@Component
public class RedisService {
    
    @Autowired
    private RedisTemplate redisTemplate;
    
    public void add(String key, Object... values) {
        //向集合中添加一个或多个元素。
        redisTemplate.opsForSet().add(key, values);
    }
    
    public Set members(String key) {
        //返回集合中的所有元素。
        return redisTemplate.opsForSet().members(key);
    }
    
    public Boolean isMember(String key, Object value) {
        //判断元素是否在集合中。
        return redisTemplate.opsForSet().isMember(key, value);
    }
}
 
  

4. Sorted Set类型

Sorted Set类型是Redis中的一个有序集合,它可以存储多个字符串元素,并且每个元素都有一个分数值,支持根据分数值从小到大或从大到小进行排序。使用场景包括排行榜、计分器等。

常用命令

  • ZADD key score1 member1 [score2 member2 ...]:向有序集合中添加一个或多个元素。
  • ZRANGE key start stop [WITHSCORES]:返回有序集合中指定范围内的元素。

Spring Boot代码示例

@Component
public class RedisService {
    
    @Autowired
    private RedisTemplate redisTemplate;
    
    public void add(String key, double score, Object value) {
        //向有序集合中添加一个元素并指定分数
        redisTemplate.opsForZSet().add(key, value, score);
    }
    
    public Set range(String key, long start, long end) {
        //返回有序集合中指定范围内的元素。
        return redisTemplate.opsForZSet().range(key, start, end);
    }
    
    public Set> rangeWithScores(String key, long start, long end) {
        //获取指定score范围内元素
        return redisTemplate.opsForZSet().rangeWithScores(key, start, end);
    }
}
 
  

5. Hash类型

Hash类型是Redis中的一个键值对集合,它可以存储多个字段和值。使用场景包括存储对象、配置参数等。

常用命令

  • HSET key field value:设置哈希表中指定字段的值。
  • HGET key field:返回哈希表中指定字段的值。
  • HGETALL key:返回哈希表中所有字段和值。

Spring Boot代码示例

@Component
public class RedisService {
    
    @Autowired
    private RedisTemplate redisTemplate;
    
    public void set(String key, String field, Object value) {
        //设置哈希表中指定字段的值。
        redisTemplate.opsForHash().put(key, field, value);
    }
    
    public Object get(String key, String field) {
        //返回哈希表中指定字段的值。
        return redisTemplate.opsForHash().get(key, field);
    }
    
    public Map getAll(String key) {
        //返回哈希表中所有字段和值。
        return redisTemplate.opsForHash().entries(key);
    }
}

你可能感兴趣的:(redis,数据库,缓存)