zoukankan      html  css  js  c++  java
  • 数据类型介绍

    String-结构
    结构:Key-Value对
    Value:可以是字符串、数字,也可以是二进制数组
    限制:Value最大值为512MB
    String-常用命令
    1.get key
    • 含义:获取指定key的值
    2.set key value
    • 含义:设置指定key的值
    3.incr key
    • 含义:将key中存储的数字值增一
    4.incrby key increment
    • 含义:将key所存储的数字值加上给定的增量
    5.decr key
    • 含义:将key中存储的数字值减一
    6.decrby key decrement
    • 含义:将key所存储的数字值减去给定的减量
    7.setnx key value
    • 含义:只有当key不存在时才设置key的值
    8.set key value nx
    • 含义:与⑦相同,只有当key不存在时才设置key的值
    9.setex key second value
    • 含义:设置指定key的值,同时设置该key的过期时间,单位为秒
    10.set key second value ex
    • 含义:与⑨相同,设置指定key的值,同时设置该key的过期时间,单位为秒
    11.set key value xx
    • 含义:只有key存在时才设置key的值
    12.mget key1 [key2...]
    • 含义:获取所有(一个或多个)指定key的值
    13.mset key1 value1 [key2 value2...]
    • 含义:同时设置一个或多个key-value对
    String-不太常用命令
    1.getset key value
    • 含义:将给定key的值设置为value,并返回key的旧值
    2.append key value
    • 含义:将value追加到旧值的末尾
    3.strlen key
    • 含义:返回key所存储的字符串值的长度
    o 当key不存在时,返回0
    o 一个中文占2个字节
    o 时间复杂度为O(1),strlen在redis内部不需要查询整个字符串来得到长度
    4.incrbyfloat key increment
    • 含义:将key所存储的值加上给定的浮点值
    5.getrange key start end
    • 含义:返回key中字符串区间为[start,end]的子串,索引从0开始
    6.setrange key offset value
    • 含义:用value擦书覆盖指定key所存储的字符串值,从偏移量offset开始,索引从0开始
    o key = content的时候,执行setrange key 1 haha 之后,key=chahant
    适用场景
    分布式ID生成
    页面访问次数统计
    常用数据缓存
    Hash数据类型
    Hash-常用命令
    1.hget key field
    • 含义:获取存储在哈希表中指定field的值
    2.hset key field value
    • 含义:将哈希表中指定field的值设置为value
    3.hdel key field1 [field2...]
    • 含义:删除哈希表中一个或多个field
    4.hexists key field
    • 含义:判断哈希表中,指定field是否存在
    5.hlen key
    • 含义:获取哈希表中字段的数量
    6.hmget key field1 [field2...]
    • 含义:获取哈希表中所有给定field的值
    7.hmset key field1 value1 [field2 value2...]
    • 含义:同时将一个或多个field-value对设置到哈希表中
    8.hincrby key fiel increment
    • 含义:为哈希表中指定field的值加上一个整型增量
    9.hgetall key
    • 含义:获取哈希表中所有字段和值
    • 时间复杂度为O(n),不建议使用
    10.hkeys key
    • 含义:获取哈希表中的所有字段
    • 时间复杂度为O(n),不建议使用
    11.hvals key
    • 含义:获取哈希表中的所有值
    • 时间复杂度为O(n),不建议使用
    12.hsetnx key field value
    • 含义:只有当哈希表中field不存在时,才设置该field的值
    13.hincrbyfloat key field increment
    • 含义:为哈希表中指定field的值加上一个浮点数增量
    理解
    相当于关系型数据库 库名 表名 数据关系

    List数据类型
    List-结构
    列表:有序、可以有重复元素
    索引相关知识
    索引从左往右,从0开始逐个增大 0 1 2 3 4 5
    索引从右往左,从-1开始逐个减小 -6 -5 -4 -3 -2 -1
    List-常用命令
    1.rpush key value1 [value2...]
    含义:在列表后侧添加一个或多个值
    2.lpush key value1 [value2...]
    含义:在列表左侧添加一个或多个值
    3.linsert key before/after value newValue
    • 含义:在列表指定的value前/后插入newValue,时间复杂度为O(n)
    4.lpop key
    • 含义:从列表左侧弹出一个值
    5.rpop key
    含义:从列表右侧弹出一个值
    6.lrem key count value
    含义:根据count值,从列表中删除值为value的项,时间复杂度为O(n)
    count > 0 时,从左往右遍历,删除最多count个与value相等的值
    count < 0 时,从右往左遍历,删除最多Math.abs(count)个与value相等的值
    count = 0 时,删除所有与value相等的值
    7.ltrim key start end
    含义:对一个列表进行修剪,只保留指定区间内的元素,不在区间内的元素都将被删除,时间复杂度为O(n)
    8.lrange key start end
    含义:获取列表指定索引范围的所有元素,时间复杂度为O(n)
    9.lindex key index
    含义:获取列表指定索引的元素,时间复杂度为O(n)
    10.llen key
    • 含义:获取列表长度,时间复杂度为O(1)
    11.lset key index newValue
    含义:设置列表指定索引的值为newValue,时间复杂度为O(n)
    注意:
    必须存在这个值才能设置成功,否则会报错
    12.blpop key timeout
    含义:移除并获取列表左边第一个元素,如果列表没有元素会阻塞直到等待超时或可弹出元素为止
    timeout单位为秒,timeout=0时不阻塞
    13.brpop key timeout
    含义:移除并获取列表右边第一个元素,如果列表没有元素会阻塞直到等待超时或可弹出元素为止
    timeout单位为秒,timeout=0时不阻塞
    应用场景

    Set数据类型
    Set-结构
    集合:无序、不能包含重复元素
    Set-集合内操作
    1.sadd key memebr1 [member2...]
    • 含义:向集合中添加一个或多个成员
    2.srem key member1 [member2...]
    含义:从集合中删除一个或多个成员
    3.scard key
    含义:获取集合中的元素个数
    4.sismember key member
    含义:判断member元素是不是集合的成员
    5.srandmember key count
    含义:随机从集合中取出count个成员
    6.spop key
    含义:随机移除并返回集合中的一个成员
    7.smembers key
    含义:获取集合中的所有成员
    时间复杂度为O(n),不建议使用,类似的操作可以使用SSCAN
    Set-集合间操作
    1.sdiff key1 [key2...]
    含义:返回给定所有集合的差集
    2.sdiffstore destKey key1 [key2...]
    含义:计算给定所有集合的差集,并存入destKey
    3.sinter key1 [key2...]
    含义:返回给定所有集合的交集
    4.sinterstore destKey key1 [key2...]
    含义:计算给定所有集合的交集,并存入destKey
    5.sunion key1 [key2...]
    含义:返回给定所有集合的并集
    6.sunionstore destKey key1 [key2...]
    含义:计算给定所有集合的并集,并存入destKey
    ZSet数据类型
    ZSet-结构
    有序集合:有序、不能包含重复元素
    每个节点包含:score和value两个属性,根据score进行排序
    索引相关知识
    索引从左往右,从0开始逐个增大 0 1 2 3 4 5
    索引从右往左,从-1开始逐个减小 -6 -5 -4 -3 -2 -1
    ZSet-常用命令
    1.zadd key score1 member1 [score2 member2...]
    含义:向有序集合添加一个或多个成员,或者更新已存在成员的分数
    2.zrem key member1 [member2...]
    含义:从有序集合中删除一个或多个成员
    3.zscore key member
    含义:获取有序集合中成员的分数
    4.zincrby key increment member
    含义:对有序集合中指定成员的分数加上增量increment
    5.zcard key
    含义:返回有序集合中元素的总个数
    6.zrange key start end [withscores]
    含义:通过索引返回有序集合中指定区间的成员信息
    o withscores 参数,加上代表一并将score数据返回
    时间复杂度:O(log(n) + m) , n=有序集合中的元素个数,m=返回的总个数
    7.zrangebyscore key min max [withscores][limit]
    含义:通过score返回有序集合中指定分数区间的成员信息
    withscores 参数,加上代表一并将score数据返回
    limit参数,加上代表限制返回多少条数据
    时间复杂度:O(log(n) + m) , n=有序集合中的元素个数,m=返回的总个数
    8.zscore key min max
    含义:返回有序集合中指定分数范围内的元素个数
    时间复杂度:O(log(n) + m) , n=有序集合中的元素个数,m=指定分数范围内的元素个数
    9.zremrangebyscore key min max
    含义:删除有序集合中指定分数区间的所有成员
    时间复杂度:O(log(n) + m) , n=有序集合中的元素个数,m=指定分数范围内的元素个数
    10.zremrangebyrank key start end
    含义:删除有序集合中给定索引区间的所有成员
    时间复杂度:O(log(n) + m) , n=有序集合中的元素个数,m=指定索引范围内的元素个数
    String VS Hash
    相似的API
    String Hash
    get hget
    set setnx hset hsetnx
    del hdel
    incrby hincrby
    mget mset hmget hmset
    保存对象的三种方式与优缺点
    方式一:采用string,将整个对象进行序列化,设计Key为对象的业务ID
    方式二:采用string,设计Key为对象的业务ID+属性名,对各个属性分散存储
    方式三:采用hash,设计Key为对象的业务ID,属性名为field
    优点 缺点
    方式一 访问Redis编程简单 相比方式二比较节约内存 序列化开销 修改属性需要操作整个数据
    方式二 Redis数据直观可查 可以方便更新属性 内存占用较大 key较为分散
    方式三 Redis数据直观可查 比起方式二比较节约内存 可以方便更新属性 访问Redis编码稍微比较复杂 TTL不好控制

  • 相关阅读:
    超出范围样式...
    CSS 滚动条设置
    js 数组全包含
    vue字段为空过滤器
    window.open 打开的新页签会携带sessionStorage中的数据
    ES6的解构赋值与深拷贝和浅拷贝
    vue中怎么处理多个单选框,且单选框互不影响的方案
    h5项目中关于ios手机软键盘导致页面变形的完美解决方案
    vue项目中关于微信分享的坑,以及安卓和ios获取location.href不同的处理
    navicat连接mysql报错1251的解决方法
  • 原文地址:https://www.cnblogs.com/dwvfw855/p/10811693.html
Copyright © 2011-2022 走看看