欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > java学习 - Redis五大数据类型

java学习 - Redis五大数据类型

2024/10/23 23:19:35 来源:https://blog.csdn.net/paofuluolijiang/article/details/139969454  浏览:    关键词:java学习 - Redis五大数据类型

redis通用命令

命令说明时间复杂度
type key判断key的数据类型O(1)
keys [pattern]获取数据库中所有符合pattern的keyO(n)
dbsize获取数据库的key的数量O(1)
exists key判断是否存在key;存在返回1,不存在返回0O(1)
del key [key…]删除key;返回删除个数O(1)
expire key seconds设置key在seconds秒后过期O(1)
ttl key查看key的剩余过期时间;-1 表示永远不过期,-2 表示key已经不存在了O(1)
persist key去掉key的过期时间O(1)

string类型

  • 结构
    • key -> value
    • age -> 20
  • 注意
    • value最大大小为512MB
  • API
命令格式功能备注复杂度
setset key value新建/修改key-value不管key是否存在都可以O(1)
setnxsetnx key value新建key-value当key不存在才能执行O(1)
set key value xxset key value xx修改key-value当key存在时才能执行O(1)
msetmset k1 v1 k2 v2 …批量设置key-value如果不存在则创建;如果存在则修改O(n)
setrange
getget key获取key对应的value不存在key,返回nilO(1)
mgetmget key1 key2 …批量获取key-value如果key不存在,返回nilO(n)
getrangegetrange key start end获取字符串指定下标的所有值O(1)
setrangesetrange key index value设置指定下标对应的值
getsetgetset key value先获取key的value,再更新如果key不存在,则返回nil,然后创建key-valueO(1)
incrincr key自增1如果key不存在,则创建并返回1;如果不能自增,则报错O(1)
incrbyincrby key n自增整数n如果key不存在,则创建并返回n;如果不能自增,则报错O(1)
incrfloatincrfloat key n自增浮点数n如果key不存在,则创建并返回n;如果不能自增,则报错O(1)
decrdecr key自减1如果key不存在,则创建并返回-1;如果不能自减,则报错O(1)
decrbydecrby key n自减整数n如果key不存在,则创建并返回-n;如果不能自减,则报错O(1)
decrfloatdecrfloat key n自减浮点数n如果key不存在,则创建并返回-n;如果不能自减,则报错O(1)
appendappend key value追加value如果key不存在,则新建O(1)
strlenstrlen key获取key对应value长度O(1)
deldel key删除key-valueO(1)

hash类型

  • 结构

    • key --> field | value

      user -> id   | 0age  | 20name | jack
      
  • 特点

    • 可以看做small redis
  • API

命令格式功能备注复杂度
hsethset key field value设置key对应field的vlaue如果key不存在,则新建field-valueO(1)
hsetnxhsetnx key field value当不存在field时进行设置如果file存在,则不执行O(1)
hmsethmset key field1 value1 field2 value2 … fieldN valueN批量设置field-value果field不存在,则创建新field-valueO(n)
hgethget key field获取key对应field的value如果field不存在,则返回(nil)O(1)
hmgethmget key field1 field2 … fieldN批量返回filed对应的value如果key不存在,则返回nilO(n)
hgetallhgetall key返回hash key对应所有的field和valueO(n)
hexistshexists key field判断是否存在field不存在,返回0;存在,返回1O(1)
hdelhdel key field删除key对应的field-value如果key不存在,则返回0O(1)
hlenhlen key获取field的数量如果key不存在,则返回0O(1)
hkeyshkeys key获取所有的fieldO(n)
hvalshvals key获取所有的valueO(n)
hincrhincr key file使field对应value自增1field不存在,创建新field-value,其value为1;如果不能自增则报错O(1)
hdecrhdecr key file使field对应value自减1field不存在,创建新field-value,其value为-1;如果不能自减少则报错O(1)
hincrbyhincrby key field num使field对应value自增numfield不存在,创建新field-value,其value为num;如果不能自增则报错O(1)
hdecrbyhincrby key field num使field对应value自减numfield不存在,创建新field-value,其value为-num;如果不能自减少则报错O(1)
hincrbyfloathincrbyfloat key field floatnum使field对应value自增floatnumfield不存在,则创建field-value,其value为floatnum;如果不能自增则报错O(1)

list类型

  • 结构
    • key --> element1- element2- …- elementN
    • username --> a-b-c-a-b-c
  • 特点
    • 元素可以重复,有序
  • API
命令格式功能备注复杂度
lpushlpush key value1 value2 … valueN从列表左插入值(1~N个)没有则创建O(n)
rpushrpush key value1 value2 … valueN从列表右侧插入值(1~N个)没有则创建O(n)
linsertlinsert key before|after value newValue从列表第一个value的前|后插入新元素newValueO(n)
lpoplpop key从列表左侧弹出第一个itemO(n)
rpoprpop key从列表右侧弹出第一个itemO(1)
lremlrem key count value根据count的值,从列表中删除count个等于value的项count>0,从左到右;count<0,从右到左;couont=0,删除所有O(n)
ltrimltrim key start end按照索引范围修剪列表保留[start,end]的元素O(n)
lrangelrange key start end获取列表中指定索引范围所有的item查找[start,end]的元素O(n)
lindexlindex key index获取列表中指定索引的item支持反向索引,即负数O(n)
llenllen key获取列表的长度O(1)
lsetlset key index newValue修改列表中index下标的元素为newValue支持反向索引,即负数O(n)
blpopblpop key timeout阻塞timeout秒后弹出左侧元素O(1)
brpopbrpop key timeout阻塞timeout秒后弹出右侧元素O(1)

set类型

  • 结构
    • key --> element1,elements2,…,elementN
    • subject --> chinese,music,art,…,maths
  • 特点
    • 元素不重复,无序
  • API
命令格式功能备注复杂度
saddsadd key element向集合中添加元素element如果element已存在,则添加失败O(1)
spopspop key从集合中随机弹出一个元素O(1)
sremsrem key element将集合中key的element删除O(1)
scardscard key获取集合中元素个数O(n)
sismembersismember key item判断item是否为集合中的元素O(1)
srandmembersrandmember key随机取出集合中的一个元素是取出不是弹出,即不会破坏的原有集合O(1)
smemberssmembers key获取集合中所有的元素O(n)
sdiffsdiff set1 set2求两个集合的差集O(n)
sunionsunion set1 set2求两个集合的并集O(n)
sintersinter set1 set2求两个集合的交集O(n)
sdiffstoresdiffstore newSet set1 set2求两个集合的差集,结果组成新集合O(n)
sinterstoresinterstore newSet set1 set2求两个集合的交集,结果组成新集合O(n)
sunionstoresunionstore newSet set1 set2求两个集合的并集,结果组成新集合O(n)

zset类型

  • 结构

    • key --> score | value
    ranking -->  2    | 小明5    | 小红12   | 阿强
    
  • 特点

    • 元素不重复,有序
    • score单独可以重复,value单独可以重复
    • score-value不能重复
  • API

    命令格式功能备注复杂度
    zaddzadd key score element [可以是多对]添加score-elementO(logN)
    zcardzcard key返回集合中元素的个数O(1)
    zremzrem key element删除集合中指定索引的elementO(1)
    zincrbyzincrby key increScore element将集合中element的score增加increScore当increScore为负数时,实现减少的功能O(1)
    zscorezcore key element获取集合中element的scoreO(n)
    zrankzrank key element获取集合中指定元素的排名O(1)
    zrangezrange key start end [withscores]获取集合中排行从start到end的元素以score从小到达进行排序;加上withscores会返回element的scoreO(log(n)+m)
    zrangebyscorezrangebyscore key minScore maxScore获取集合中score位于[minScore,maxScore]之间的元素O(log(n)+m)
    zcountzcount key minScore maxScore获取集合中score处于[minScore,maxScore]之间的element个数O(log(n)+m)
    zremrangebyrankzremrangebyrank key start end删除指定排名内的元素O(log(n)+m)
    zremrangebyscorezremrangebyscore key minScore maxScore删除指定分数内的元素O(log(n)+m)
    zrevrank
    zrevrange
    zrevrangebyscore
    zinterstore
    zunionstore

版权声明:

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

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