zoukankan      html  css  js  c++  java
  • Redis 的 5 种数据类型的基本使用

    Redis 中的 5 种数据类型

    Redis 中 有 5 种数据结构,分别是 “字符串/string”,“列表/list”,“集合/set”,“有序集合/zset”,“字典(哈希表)/hash”。
    本来我想在这里详细的介绍一下,后来发现网上其实已经有了很多的介绍,并且的话,官方也有一些比较详细的说明,那么我也就没有必要再废话一遍了。
    Redis命令参考 这个链接介绍的比较详细。我在这里将该链接内容进行一个小小的汇总。

    1. string

    1.1 创建系列

    创建函数里面有主要记住 set。 想要 判断是否存在就用 setnx 或者 msetnx 想要设置时间就是 setex, psetex。 想要批量设置就是 mset
    'increment' 和 'decrement' 表示具体值. 'ex' or 'seconds' 是 秒 'px' or 'milliseconds' 是毫秒. 'start' 和 'end' 在一起表示范围。 'offset' 就是偏移。
    '[]' 里面就是可有可无。'...' 就是可以有很多个。 '|' 就是多个挑一个,不能用其他的。

    • setSET key value [EX seconds] [PX milliseconds] [NX|XX]

    • setnxSETNX key value

    • setexSETEX key seconds value

    • psetexPSETEX key milliseconds value

    • mset: MSET key value [key value …]

    • msetnx: MSETNX key value [key value …]

    1.2 查询系列

    一个字符串有啥好查询的,无非就是 长度 和 值。 值就是包括全部,或者是其中的一部分字串。 所以这里就有 查值 查长度 查指定区间值。 为了减少多次 服务请求 就用 mget。

    • getGET key

    • strlen: STRLEN key

    • getrange: GETRANGE key start end

    • mget: MGET key [key …]

    1.3 修改系列

    修改就是, 添加到末尾, 或者修改指定位置的值。

    • append: APPEND key value

    • setrangeSETRANGE key offset value

    1.4 数值有关:

    数值还有啥好说的, +1, -1, +n, -n, +float 记住 'incr' 是 + , 'decr' 是 -。 如果是指定值 就在后面补上 'by', 浮点数的话,再加一个 'float'

    • incr: INCR key

    • decr: DECR key

    • incrby: INCRBY key increment

    • decrby: DECRBY key decrement

    • incrbyfloat: INCRBYFLOAT key increment

    2. hash

    函数前面 用 'h' 来做前缀, 多字段以及批量用 'm' 来区分。 'vals' 表示值, 'keys' 表示键, 'getall' 就表示都有。 'exists' 判断是否存在, 'scan' 就是扫描。看字典长度用 'len', 字典里面字段长度用 'strlen'.

    字典名称用 'key', 字段名称 用 'field', 字段值用 'value', 'cursor' 是游标,'MATCH pattern' 是查询条件,'COUNT count' 是数量。

    2.1 创建有关

    哈希表嘛,也就是字典。 里面包含了多个字段。 创建的时候,就分为两种,单个字段的,和多个字段的。设置一个字段 hset, 多个字段 hmset。 为单个字段设置过期时间 hsetnx。

    • hset: HSET key field value

    • hsetnx: HSETNX key field value

    • hmset: HMSET key field value [field value …]

    2.2 查询有关

    查询值,判断是不是存在,看看字典长度,看看字段长度,批量查询。 看看全部的值,看看全部的字段,看看全部字段的值。扫描一下。

    • hget: HGET key field

    • hexists: HEXISTS key field

    • hlen: HLEN key

    • hstrlen: HSTRLEN key field

    • hmget: HMGET key field [field …]

    • hvals: HVALS key

    • hkeys: HKEYS key

    • hgetall: HGETALL key

    • hscan: HSCAN key cursor [MATCH pattern] [COUNT count]

    2.3 删除有关

    删除,就是删除字段。 删除字典可以用万能删除大法。

    • hdel: HDEL key field [field …]

    2.4 修改数值有关

    数值修改的话, +n + float 就可以了,其他的,用 +(-n) 就okk 了

    • hincrby: HINCRBY key field increment

    • hincrbyfloat: HINCRBYFLOAT key field increment

    3. list

    list 喜欢用 'L' 和 'R' 开头。 然后 用一个阻塞 用 'B' 开头。 'push' 是添加, 'pop' 是删除。存在与否是 'x'。'rem' 是删除,'trim' 是保留。'index' 是具体位置。'insert' 就是插入。
    两个列表之间 用 'source' 和 'destination' 区分。 阻塞的时间用 'timeout'。 'BEFORE'|'AFTER' 就是 表示插入在 'pivot' 前还是在后。

    3.1 push and pop

    • lpush: LPUSH key value [value …]

    • rpush: RPUSH key value [value …]

    • lpop: LPOP key

    • rpop: RPOP key

    • lpushx: LPUSHX key value

    • rpushx: RPUSHX key value

    • rpoplpush: RPOPLPUSH source destination

    • blpop: BLPOP key [key …] timeout

    • brpop: BRPOP key [key …] timeout

    • brpoplpush: BRPOPLPUSH source destination timeout

    3.2 删除

    • lrem: LREM key count value

    • ltrim: LTRIM key start stop

    3.3 查询

    • llen: LLEN key

    • lindex: LINDEX key index

    • lrange: LRANGE key start stop

    3.4 修改和插入

    • lset: LSET key index value

    • linsert: LINSERT key BEFORE|AFTER pivot value

    4. set

    集合能有啥, 用 's' 开头, 'add' 是添加, 'ismember' 是判断是否存在。 删除有 'pop' 和 'rem', 'rand'有随机的意思。 'members' 有 集合中元素的意思。'inter' 交集,'union' 并集, 'diff' 差集。 'store' 保存新集合。'move' 集合中元素移动。

    'member' 和 字典中的 'field' 有点点类似。

    4.1 添加

    • sadd: SADD key member [member …]

    4.2 判断存在

    • sismember: SISMEMBER key member

    4.3 删除

    • spop: SPOP key

    • srem: SREM key member [member …]

    4.4 查询

    • srandmember: SRANDMEMBER key [count]

    • scard: SCARD key

    • smembers: SMEMBERS key

    • sscan: SSCAN key cursor [MATCH pattern] [COUNT]

    4.5 集合间操作

    • smove: SMOVE source destination member

    • sinter: SINTER key [key …]

    • sinterstore: SINTERSTORE destination key [key …]

    • sunion: SUNION key [key …]

    • sunionstore: SUNIONSTORE destination key [key …]

    • sdiff: SDIFF key [key …]

    • sdiffstore: SDIFFSTORE destination key [key …]

    5. zset

    有序集合嘛,就是有序,和集合相比之下多了一个分数。相当于是 集合 + hash表。
    'score' 表示分数 查看数量 用 'card',指定区间数量用 'count'。 因为有序,有一个排序,所以就有倒序和顺序,用'rev' 区分。'lex'用在 分数一样,的有序集合中,其他集合使用,没啥意义。其他的一些,前面都介绍过了。

    5.1 添加

    • zadd: ZADD key score member [[score member] [score member] …]

    5.2 查询

    • zscore: ZSCORE key member

    • zcard: ZCARD key

    • zcount: ZCOUNT key min max

    • zrange: ZRANGE key start stop [WITHSCORES]

    • zrevrange: ZREVRANGE key start stop [WITHSCORES]

    • zrangebyscore: ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

    • zrevrangebyscore: ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

    • zrank: ZRANK key member

    • zrevrank: ZREVRANK key member

    • zrangebylex: ZRANGEBYLEX key min max [LIMIT offset count]

    • zlexcount: ZLEXCOUNT key min max

    • zscan: ZSCAN key cursor [MATCH pattern] [COUNT count]

    5.3 修改

    • zincrby: ZINCRBY key increment member

    5.4 删除

    • zrem: ZREM key member [member …]

    • zremrangebyrank: ZREMRANGEBYRANK key start stop

    • zremrangebyscore: ZREMRANGEBYSCORE key min max

    • zremrangelex: ZREMRANGEBYLEX key min max

    5.5 集合间运算

    • zunionstore: ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]

    • zinterstore: ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]

    6. 总结

    不行就查资料吧 链接 有一说一,这个还挺全的,这里因为是一些基础的东西,我也没有做太多的解释。 没有去考虑性能和一些实际的运用场景。 多半是给自己参考用一下。 自己总是需要重复查找一些资料。
    现在把一些资料都放在自己的博客里面,可能好一点。

  • 相关阅读:
    SecureCRT和乱码
    iphone“连接到icloud是出错”的可能原因
    Tcpdump usage examples
    leetcode-pascal triangle I&&II
    How To Capture Packets with TCPDUMP?
    leetcode-two sum
    Linux统计某文件夹下文件、文件夹的个数
    leetcode-Minimum Depth of Binary Tree
    leetcode-Construct Binary Tree from Preorder and Inorder Traversal
    patch 修改有问题的
  • 原文地址:https://www.cnblogs.com/gznb/p/13163383.html
Copyright © 2011-2022 走看看