Redis

发布于:2025-06-27 ⋅ 阅读:(19) ⋅ 点赞:(0)

Redis——NoSQL数据库

  • 结构化(Structured)
  • 关联的(Relational)
  • SQL查询
  • ACID (原子性、隔离型、持久性、一致性)

NoSQL(非关系型数据库)

  • 非结构化
  • 无关联的
  • 非SQL
  • BASE

Redis全程是Remote Dictionary Server,远程词典服务器,是一个基于内存的键值型NoSQL数据库。

特征:

  • 键值Key-value型,value支持多种不同数据结构,功能丰富
  • 单线程,每个命令具备原子性
  • 低延迟,速度快(基于内存、IO多路复用、良好的编码)
  • 支持数据持久化。
  • 支持主从集群、分片集群
  • 支持多语言客户端

yum install -y gcc tcl 安装gcc依赖

String 字符串操作命令

SET key value

设置指定key的值为value

GET key

获得指定key的值

SETEX key seconds value

将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。

SETNX key value

当key不存在时,关联value的值

Redis hash哈希操作命令

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

HSET key filed value

将哈希表key中的filed字段设置为value

HGET key filed

获取哈希表key中的filed字段的value值

HDEL key

删除哈希表key的所有值

HKEYS key

获得哈希表key的所有字段

HVALS key

获得哈希表key的所有的值

列表(List)操作命令

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

LPUSH key value1[value2]

将一个或多个值插入到表的头部

LRANGE key start stop

获取列表指定范围内的元素

RPOP key

移除并获取列表的最后一个元素

LLEN key

获取列表长度

Redis集合操作命令

redis set是String类型的无序集合。集合成员是唯一的,集合中不能出现重复数据。

SADD key member1 [member2]

向集合中添加一个或多个成员

SMEMBERS key

返回集合中的所有成员

SCARD key

获取集合的成员数

SINTER key1[key2]

返回给定所有集合的交集

SUNION key1[key2]

返回给定所有集合的并集

SREM key member1[member2]

删除集合中的一个或多个成员

Redis有序集合(Sorted set)

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

ZADD key score1 member1 [score2 member2]

向有序集合添加一个或多个成员

ZRANGE key start stop [WITHSCORES]

通过索引区间返回有序集合汇中指定区间内的成员

ZINCRBY key increment member

有序集合中对指定成员的分数加上增量increment

ZREM key member [member..]

移除有序集合中的一个或多个成员

通用命令

Redis的通用命令是不分数据类型的

KEYS pattren

查找所有符合给定模式(pattern)的key

EXISTS key

检查给定key是否存在

TYPE key

返回key所存储的值的类型

DEL key

删除key

Redis的Java客户端

  • Jedis
  • Lettuce
  • Spring Data Redis

Spring Data Redis是Spring的一部分,对底层Redis开发包进行了高度封装。在Spring项目中,可以使用Spring Data Redis来简化操作。

Spring Data Redis使用方式

  • 导入坐标
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  • 配置Redis数据源
redis:
  host: localhost
  port: 6379
  database: 0
  password: 123456
  • 编写配置类,创建RedisTemplate对象
@Configuration
@Slf4j
public class RedisConfiguration {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        log.info("开始创建redis模板对象...");
        RedisTemplate redisTemplate = new RedisTemplate();

        //设置redis的连接工厂对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        //设置redis key的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());

        return redisTemplate;
    }
}
  • 通过RedisTemplate对象操作Redis
ValueOperations valueOperations = redisTemplate.opsForValue();  //对Redis的String类型进行操作
HashOperations hashOperations = redisTemplate.opsForHash();     //对Redis的Hash类型操作
ListOperations listOperations = redisTemplate.opsForList();     //对Redis的List类型进行操作
SetOperations setOperations = redisTemplate.opsForSet();        //对Redis的Set类型进行操作
ZSetOperations zSetOperations = redisTemplate.opsForZSet();     //对Redis的有序集合(Sorted Set)进行操作

String操作命令

//SET key value
void set(K key, V value);	//源码
redisTemplate.opsForValue().set("name","zhangsan");

//GET key
@Nullable
V get(Object key);	//源码
String name = (String) redisTemplate.opsForValue().get("name");

//SETEX key seconds value
void set(K key, V value, long timeout, TimeUnit unit);
redisTemplate.opsForValue().set("code","123456",3, TimeUnit.MINUTES);	//设置code:123456 3分钟过期


网站公告

今日签到

点亮在社区的每一天
去签到