• Redis笔记


    Redis简介

    Redis是一个基于内存的key-value 结构数据库 

    * 基于内存存储,读写性能高

    * 适合存储热点数据(热点商品,咨询,新闻)

    * 企业应用广泛

     

    5种常用数据类型介绍

    Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型:

    * 字符串string :普通字符串,Redis中最简单的数据类型

    *哈希 hash :也叫散列,类似于java中的HashMap结构

    *列表list :按照插入顺序排序,可以有重复元素,类似于java中的LinKedList

    *集合set : 无序集合,没有重复元素,类似于java中的HashSet

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

    字符串操作命令

    Redis字符串类型常用命令:

    * SET key value   设置指定key的值

    * GET key  获取指定key的值

    * SETEX Key seconds value 设置指定key的值,并将key的过期时间设为seconds秒

    * SETNX Key value       只有在key不存在时设置key的值

    1. @Test
    2. public void testString() {
    3. redisTemplate.opsForValue().set("city", "北京");
    4. String city = (String) redisTemplate.opsForValue().get("city");
    5. System.out.println(city);
    6. redisTemplate.opsForValue().set("code", "1234", 3, TimeUnit.MINUTES);
    7. redisTemplate.opsForValue().setIfAbsent("lock", "1");
    8. redisTemplate.opsForValue().setIfAbsent("lock", "2");
    9. }

    Hash操作命令

    Redis hash是一个string类型的field和value的映射表,hash特别适用于存储对象,常用命令:

    *hset key field value   将哈希表key中的字段field的值设为value

    * hget key field           获取存储在哈希表指定字段的值

    * hdel key field          删除存储在哈希表中的指定字段

    * hkeys key               获取哈希表中所有字段

    *  hvals key               获取哈希表中所有值

    1. @Test
    2. public void testHash() {
    3. HashOperations hashOperations = redisTemplate.opsForHash();
    4. hashOperations.put("100", "name", "tom");
    5. hashOperations.put("100", "age", "20");
    6. String name = (String) hashOperations.get("100", "name");
    7. System.out.println(name);
    8. Set keys = hashOperations.keys("100");
    9. System.out.println(keys);
    10. List values = hashOperations.values("100");
    11. System.out.println(values);
    12. hashOperations.delete("100", "age");
    13. }

    列表操作命令

    Redis列表是简单的字符串列表,按照插入顺序排序,常用命令:

    * lpus key value1 [value2]          将一个或多个值插入到列表头部

    *  lrange key start stop             获取列表指定范围内的元素

    * prop key                               移除并获取列表最后一个元素

    * llen key                                     获取列表长度

    1. @Test
    2. public void testList() {
    3. ListOperations listOperations = redisTemplate.opsForList();
    4. listOperations.leftPushAll( "mylist","a","b","c");
    5. listOperations.leftPush("mylist","d");
    6. List mylist = listOperations.range("mylist", 0, -1);
    7. System.out.println(mylist);
    8. listOperations.rightPop("mylist");
    9. Long size = listOperations.size( "mylist");
    10. System.out.println(size);
    11. }

    集合操作命令

    Redis set 是string类型的无序集合 ,集合成员是唯一的,集合不能出现重复的数据

    * sadd key member1[member2]  向集合添加一个或多个成员

    * smembers key                         返回集合中的所有成员

    *   scard key                                      获取集合的成员数

    *   sinter  key1  [key2]                返回给定所有集合的交集

    *  sunino key1[key2]                返回所有给定集合的并集

    *  srem  key member1 [member2] 删除集合中一个或多个成员

    1. SetOperations setoperations = redisTemplate.opsForSet();
    2. setoperations.add("set1", "a", "b", "c", "d");
    3. setoperations.add("set2", "a", "b", "x", "y");
    4. Set members = setoperations.members("set1");
    5. System.out.println(members);
    6. Long size = setoperations.size("set1");
    7. System.out.println(size);
    8. Set intersect = setoperations.intersect("set1", "set2");
    9. System.out.println(intersect);
    10. Set union = setoperations.union("set1", "set2");
    11. System.out.println(union);
    12. setoperations.remove("set1", "a", "b");

    有序集合操作命令

    Redis 有序集合是string类型元素的集合,且不允许有重复成员,每个元素都会关联一个double类型的分数。

    *zadd key score1 member1[score2 member2]  向有序集合添加一个或多个成员

    * zrange key start stop [withscores]  通过索引区间返回有序集合中指定区间内的成员

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

    * zrem key member [member...]           移除有序集合中的一个或多个成员

    1. ZSetOperations zSetOperations =redisTemplate.opsForZSet();
    2. zSetOperations.add("zset1","a",10);
    3. zSetOperations.add("zset1","b",12);
    4. zSetOperations.add("zset1","c",9);
    5. Set zsetl =zSetOperations.range("zset1",0,-1);
    6. System.out.println(zsetl);
    7. zSetOperations.incrementScore("zset1","c",10);
    8. zSetOperations.remove("zset1","a","b");

    通用命令

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

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

    * exists key  检查给定key是否存在

    * type key  返回key所储存的值的类型

    * del key  该命令用于在key存在是删除Key

    1. Set keys = redisTemplate.keys("*");
    2. System.out.println(keys);
    3. Boolean name = redisTemplate.hasKey("name");
    4. Boolean set1 = redisTemplate.hasKey("set1");
    5. for (Object key : keys) {
    6. DataType type = redisTemplate.type(key);
    7. System.out.println(type.name());
    8. redisTemplate.delete("mylist");
    9. }
    10. redisTemplate.delete("mylist");

  • 相关阅读:
    Web开发之HTML知识点总结
    脚本关闭8090端口
    电视访问群晖共享文件失败的设置方式,降低协议版本
    FPGA—IIC 设计
    React的类式组件和函数式组件之间有什么区别?
    抖音a_bogus,mstoken全参数爬虫逆向补环境2024-06-15最新版
    项目实战-day1.0
    6-3 pytorch使用GPU训练模型
    LeetCode 1475. 商品折扣后的最终价格 / 687. 最长同值路径 / 652. 寻找重复的子树
    11月外贸新规
  • 原文地址:https://blog.csdn.net/weixin_67573348/article/details/132773620