首页 > 数据库 >2.2 RedisAPI之string

2.2 RedisAPI之string

时间:2022-10-24 21:35:07浏览次数:45  
标签:时间 string 复杂度 自增后 value videoInfo key 2.2 RedisAPI


1.简介

  • 字符串键值结构(key value)
  • value的值小于512m,一般建议一个key-value的大小为100k
  • 使用场景
  • 缓存
  • 计数器
  • 分布式锁

2.命令

  • 设置key-value
  • 不管key是否存在都设置
set key value
  • key不存在才设置
setnx key value
  • key存在才设置
set key value xx

时间复杂度为O(1)

  • 获取key对应的value
get key

时间复杂度为O(1)

  • key自增1,如果key不存在,自增后key的值为1
incr key

时间复杂度为O(1)

  • key自减1,如果key不存在,自增后key的值为-1
decr key

时间复杂度为O(1)

  • key自增k,如果key不存在,自增后key的值为k
incrby key k

时间复杂度为O(1)

  • key自减k,如果key不存在,自增后key的值为-k
decrby key k

时间复杂度为O(1)

  • 设置新值并返回旧值
getset key newvalue

时间复杂度为O(1)

  • 将value值追加到旧的value
append key value

时间复杂度为O(1)

  • 返回字符串的长度(注意中文)
strlen key

时间复杂度为O(1)

  • 浮点类型增加操作
incrbyfloat key floatvalue

时间复杂度为O(1)

  • 获取字符串指定下标所有值
getrange key start end

时间复杂度为O(1)

  • 设置指定下标所有对应的值
setrange key index value

时间复杂度为O(1)

3.实战
(1).使用场景
缓存视频的基本信息(数据源在MySql中)。

(2).缓存步骤

  • 定义key
  • 从Redis中获取key对应的value
  • 如果value为空,则去MySql中获取视频的基本信息,然后缓存在Redis中,如果value不为空则直接返回视频基本信息给用户

(3).伪代码

public VideoInfo get(int id){
String redisKey = redisPrefix + id;
VideoInfo videoInfo = redis.get(redisKey);
if(videoInfo == null){
videoInfo = mysql.get(id);
if(videoInfo != null){
redis.set(redisKey,serialize(videoInfo));
}
}
return videoInfo;
}


标签:时间,string,复杂度,自增后,value,videoInfo,key,2.2,RedisAPI
From: https://blog.51cto.com/u_15843693/5791304

相关文章

  • 2.1 RedisAPI之简介
    1.通用命令遍历所有keykeys*keys命令一般不在生产环境使用,主要原因是生产环境下通常有大量的key,列出所有key没有实际的意义并且会消耗很多内存资源。删除指定keydelkey计......
  • 「ARC151E」Keep Being Substring - 题解
    题意题目链接:Link。有一个序列\(A\)。\(X,Y\)是给定的\(A\)的两个子串,每次可以在\(X\)的开头或末尾增添或删除一个数字,且需满足任意时刻\(X\)非空且为\(A\)的......
  • cstring转string(cstring转string特殊字符)
    如何把64位整型数转换为CString猜测你是不是在64位系统中需要将一个指针变换成CString指针,那么直接用强制类型转换就好CString如何转换为doubledouble=(double)stringa="......
  • subStr和subString以及slice的使用和区别
    substr相关使用注意事项第一个参数必须为数值,可正可负可为0为负数则从倒数开始第二个参数是指定长度,默认为到字符串最后如果第一个参数超过字符串的长度,那么会返回......
  • [2022.10.23]String的不可变性
    final关键字代表最终、不可改变的常见四种用法:1.可以用来修饰一个类(不能有任何子类)2.可以用来修饰一个方法(最终方法,不能被覆盖重写)3.还可以用来修饰一个局部变量(对......
  • toString()和valueOf的区别
    说明toString()valueOf()这两个方法几乎出现在js中所有类型对应的内置对象的原型上(null和undefined除外),它们的出现解决了值运算的问题,但也出现了隐式转换这个让人头疼的......
  • Leetcode第1768题:交替合并字符串(Merge Strings Alternately)
    解题思路:使用两个指针i和j分别指向两个字符串首位。循环中一次进行如下判断及操作:如果i没有超出word1的长度,就将word[i]加入返回结果中。然后i指针后移一位。如果j没有......
  • String,Number,Boolean
    String<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content=......
  • [LeetCode] 1768. Merge Strings Alternately
    Youaregiventwostrings word1 and word2.Mergethestringsbyaddinglettersinalternatingorder,startingwith word1.Ifastringislongerthantheot......
  • #yyds干货盘点#Arraybuffer转String
    ​​ArrayBuffer​​ 对象代表储存二进制数据的一段内存,它不能直接读写,只能通过视图(​​TypedArray​​视图和​​DataView​​视图)来读写,视图的作用是以指定格式解读二进......