欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > Redis

Redis

2025/5/8 4:32:57 来源:https://blog.csdn.net/qq_74623042/article/details/145018156  浏览:    关键词:Redis

Redis

  • 数据类型操作命令
    • 字符串
    • 哈希
    • 列表
    • 集合
    • 有序集合
    • 通用命令
  • Redis 的Java客户端
    • Spring Date Redis 使用方式
    • 实现数据类型操作
      • 字符串类型
      • 哈希类型
      • 列表类型
      • 集合集合
      • 有序集合
      • 通用命令

数据类型操作命令

字符串

操作命令:

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

哈希

哈希( hash ):也叫散列,类似于 HashMap 结构

操作命令作用
HSET key field value将哈希表 key 中的字段 field 设为 value
HGET key field获取 字段
HDEL key field删除指定 字段的值
HKEYS key获取哈希表 所有字段
HVALS key获取所有值

列表

列表 ( list ):按照插入顺序排序,可以有重复元素,类似于 LinkedList

操作命令作用
LPUSH key value1 value2一个多个值 插到头部
LRANGE key start stop获取指定范围的元素
RPOP key移除 列表最后一个元素
LLEN key获取列表长度

集合

集合( set ):无序集合,没有重复元素,类似与 HashSet

操作命令作用
SADD key member1 [member2]添加一个或多个
SMEMBERS key返回集合 所有成员数
SCARD key获取集合成员数
SINTER key1 [key2]获取交集
SUNION key1 [key2]返回所有给定集合的并集
SREM key member1 [member2]删除一个或多个

有序集合

有序集合(sorted set / zset):集合中每个元素关联一个分数(score),根据 分数升序排序,没有重复元素。

操作命令作用
ZADD key score1 member1 [score2 member2]添加一个或多个成员,并赋初值 score
ZRANGE key start stop [WITHSCORES]返回有序集合中指定区间内的成员
ZINCRBY key increment member给元素添加增量 increment
ZREM key member [member]移除一个或多个成员

通用命令

操作命令作用
KEYS pattern查找所有符合 模式( pattern ) 的 key
EXISTS key检查 key 是否存在
TYPE key返回 key 存储值的类型
DEL keykey 存在时 删除

Redis 的Java客户端

  • Jedis (官方推荐)
  • Lettuce
  • Spring Data Redis

Spring Date Redis 使用方式

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

操作步骤:

    1. 导入Spring Data Redis 的 maven 坐标
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
    1. 配置 Redis 数据源
spring:redis:host: ${sky.redis.host}port: ${sky.redis.port}password: ${sky.redis.password}datebase: ${sky.redis.database}
    1. 编写配置类,创建 RedisTemplate 对象
@Configuration
@Slf4j
public class RedisConfiguration {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {log.info("开始创建Redis模版对象:{}",redisConnectionFactory);RedisTemplate redisTemplate = new RedisTemplate();//设置redis 的连接工厂对象redisTemplate.setConnectionFactory(redisConnectionFactory);//设置Redis key的序列化器redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}
}
    1. 通过 RedisTemplate 对象操作 Redis
@SpringBootTest
public class SpringDataRedisTest {@Autowiredprivate RedisTemplate redisTemplate;@Testpublic void testRedisTemplate() {System.out.println(redisTemplate);//操作字符串对象ValueOperations valueOperations = redisTemplate.opsForValue();//操作HashHashOperations hashOperations = redisTemplate.opsForHash();//操作列表ListOperations listOperations = redisTemplate.opsForList();//操作集合SetOperations setOperations = redisTemplate.opsForSet();//操作有序集合ZSetOperations zSetOperations = redisTemplate.opsForZSet();}
}

实现数据类型操作

字符串类型

   //setredisTemplate.opsForValue().set("hello","world");//getString hello=(String) redisTemplate.opsForValue().get("hello");System.out.println(hello);   //  world//setex    设置定时redisTemplate.opsForValue().set("code","123",3, TimeUnit.DAYS);//不存在时 设置值  返回 true 设置成功  false 设置失败boolean is=redisTemplate.opsForValue().setIfAbsent("code","1");System.out.println(is);     //  false

哈希类型

  HashOperations hashOperations=redisTemplate.opsForHash();//HSET  设置 键:值hashOperations.put("100","name","tom");hashOperations.put("100","age","20");//HGETString name=(String) hashOperations.get("100","name");System.out.println(name);    //  tom//HKEYS  获取所有keySet keys=hashOperations.keys("100");System.out.println(keys);    // [name, age]//HVALS 获取所有 valueList values=hashOperations.values("100");System.out.println(values);  // [tom, 20]//HDELhashOperations.delete("100","name");

列表类型

  ListOperations listOperations=redisTemplate.opsForList();//LPUSH  添加到 头部listOperations.leftPushAll("mylist","a","b","c");//添加到尾部listOperations.rightPush("mylist","d");//LRANGE  获取List<String> list=listOperations.range("mylist",0,-1);System.out.println(list);    //  [c, b, a, d]//RPOP 删除最后一个listOperations.rightPop("mylist");//LLEN 获取 长度Long size=listOperations.size("mylist");System.out.println(size);    // 3

集合集合

  SetOperations setOperations=redisTemplate.opsForSet();//SADDsetOperations.add("set1","a","b","c");setOperations.add("set2","a","b","x");//SMEMBERS  返回所有成员Set members=redisTemplate.opsForSet().members("set1");System.out.println(members);    //  [b, a, c]//SCARD  获取成员数量Long size=setOperations.size("set1");System.out.println(size);       // 3//SINTER  取交集Set setinter=setOperations.intersect("set1","set2");System.out.println(setinter);   //   [b, a]//SUNION  并集Set union =setOperations.union("set1","set2");System.out.println(union);      //   [b, a, x, c]//SREM   删除一个 或 多个setOperations.remove("set" ,"a","b");

有序集合

   ZSetOperations zSetOperations=redisTemplate.opsForZSet();//ZADD 添加并 赋分值   小 -> 大zSetOperations.add("zset1","a",10);zSetOperations.add("zset1","b",12);zSetOperations.add("zset1","c",9);//ZRANGE     显示区间数值Set zset1=zSetOperations.range("zset1",0,-1);System.out.println(zset1);//   [c, a, b]//ZINCRBY  修改分数                                        增量zSetOperations.incrementScore("zset1","b",-10);//   [b, c, a]System.out.println(zSetOperations.range("zset1",0,-1));//ZREM  移除 单 多个 成员zSetOperations.remove("zset1","a","b");

通用命令

//KEYS   返回符合的 keySet keys=redisTemplate.keys("list");//EXISTS  判断是否存在Boolean name=redisTemplate.hasKey("name");Boolean set1=redisTemplate.hasKey("set1");System.out.println(name+"  "+set1);   //false  true//TYPE  返回 key 存储类型for (Object key : keys) {DataType type=redisTemplate.type(key);System.out.println("类型:"+type);     //类型:STRING}//DEL  存在时删除redisTemplate.delete("mylist");

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com