七 SpringBoot - Redis 缓存

1、五大基本数据类型和操作1.1 字符串-string命令说明set key value如果key还没有,那就可以添加,如果key已经存在了,那会覆盖原有key的值get key如果key还没有,获取为(nil) , 代表key没有被使用,如果key存在 , 可以获取对应key的值exists key判断某个key是否存在,返回Integer值1 代表存在 , 如果 exists car2 则返回0,不存在move key db将当前数据库存在的键值移动到其它数据库,其中db是数据库的序号expire key 秒钟为已经存在的key设置过期时间,注意过期之后,从内存中去掉了,是get不到的ttl key查看还有多少秒过期,-1表示永不过期,-2表示已过期type key命令用于返回 key 所储存的值的类型del key根据key值删除append key value根据key将其值进行字符串拼接strlen key根据key获取其值的字符串长度,字节数incr key对key对应数值进行加一操作,对应的字符串值必须是数值decr key对key对应数值进行减一操作incrby key 数值对key对应数值按照指定的值进行递增decrby key 数值对key对应数值按照指定的值进行递减getrange key 起始位置 结束位置获取指定区间内的值,类似between 。。。and的关系 , 起始位置为0,结束位置为-1 就是返回所有setrange key 起始位置 具体值设置指定区间内的值,具体值会从起始位置开始覆盖setex key 过期秒值 真实值设置带过期时间的key,动态设置 。setnx key value只有在 key 不存在时,才会设置 key 的值 , 如果已经存在了 , 不覆盖,设置不了;setnx key value如果返回0 代表没有设置成功,key对应值已经存在,如果返回1代表设置成功;这个就是redis的分布式锁命令,很重要;mset key1 val1 key2 val2 ....同时设置一个或多个 key-value 对mget key1 key2 key3 ....获取所有(一个或多个)给定 key 的值 。msetnx key1 val1 key2 val2 .....同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在1.2 列表-listlist操作起来类似于栈;
命令说明lpush key val1 val2 val3 ....从左侧开始存放元素,先进后出lrange key 起始位置 结束位置从左侧开始,指定范围获取元素,-1代表所有rpush key val1 val2 val3 ....从右侧开始存放元素,先进先出lpop key从左侧一次取出一个元素rpop key从右侧一次取出一个元素lindex key index按照索引下标获得元素(从左到右,左下标从0开始,如果是-1代表最后一个 , -2代表倒数第二个)llen key获取集合元素个数lrem key 个数 具体的值从左往右删除指定个数等于具体值的元素,返回的值为实际删除的数量,个数0,表示删除全部给定的值ltrim key 开始index 结束index截取指定范围的值后再赋值给keyrpoplpush 源列表 目的列表移除列表的最后一个元素,并将该元素添加到另一个列表并返回lset key index value将key集合中的指定下标位置值改为valuelinsert  key  before/after 值1 值2在list某个已有 值1 的前后再添加具体 值2小结:

  1. 它是一个字符串链表,left、right都可以插入添加;
  2. 如果键不存在,创建新的链表;
  3. 如果键已存在,新增内容;
  4. 如果值全移除,对应的键也就消失了;
  5. 链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了;
1.3 集合-set命令说明sadd key val1 val2 ...集合set中添加元素,如果有重复元素会自动去除smembers  key查看集合中的元素sismember  key val判断val是否在set集合中 , 如果在返回1 ,不在返回0scard key获取集合里面的元素个数srem key value删除集合中元素srandmember key 某个整数随机出几个数,如果超过最大数量就全部取出srandmember key 某个整数如果写的值是负数 , 比如-3 ,表示需要取出3个,但是可能会有重复值 。spop key随机出栈smove key1 key2将key1里的某个值赋给key2sdiff key1 key2在第一个set里面而不在后面任何一个set里面的项sinter key1 key2在两个set中都有的值的交集返回sunion key1 key2在两个set中所有的值的集合返回,会自动排除重复1.4 键值对-hashK V模式不变,但V是一个键值对;
命令说明hset 父key 子key 子value将父key,增加子键值对,类似属性hget 父key 子key获取父key,某个子key的值,获取属性值hmset 父key 子key1 子val1 子key2 子val2 ....批量添加属性hmget 父key 子key1 子key...批量获取属性hgetall 父key批量获取属性及值hdel 父key 子key删除子key属性及值hlen 父key返回父key中的子key个数,相当于java实体的属性个数hexists 父key 子key判断父key中是否包含某个子key,结果为1,代表存在hkeys 父key获取父key中所有的子keyhvals 父key获取父key中的所有的子valhincrby 父key 子key 值给指定的子key值增加固定的值hincrbyfloat 父key 子key 值给有指定key的值增加小数hsetnx 父key 子key 子val如果子key存在则失败,如果不存在则赋值1.5 有序集合-zset在set基础上,加一个score值 。之前set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 v2;

推荐阅读