科技部网站建设合同,中国中铁建设集团门户网,帮别人推广赚钱,腾讯云wordpress插件Hash#xff08;哈希#xff09;
介绍
Redis 中的 Hash 是一个 String 类型的 field-value#xff08;键值对#xff09; 的映射表#xff0c;特别适合用于存储对象#xff0c;后续操作的时候#xff0c;你可以直接修改这个对象中的某些字段的值。
Hash 类似于 JDK1.…Hash哈希
介绍
Redis 中的 Hash 是一个 String 类型的 field-value键值对 的映射表特别适合用于存储对象后续操作的时候你可以直接修改这个对象中的某些字段的值。
Hash 类似于 JDK1.8 前的 HashMap内部实现也差不多(数组 链表)。不过Redis 的 Hash 做了更多优化。 常用命令
命令介绍HSET key field value设置指定哈希表中指定字段的值HSETNX key field value只有指定字段不存在时设置指定字段的值HMSET key field1 value1 field2 value2 ...同时将一个或多个 field-value (域-值)对设置到指定哈希表中HGET key field获取指定哈希表中指定字段的值HMGET key field1 field2 ...获取指定哈希表中一个或者多个指定字段的值HGETALL key获取指定哈希表中所有的键值对HEXISTS key field查看指定哈希表中指定的字段是否存在HDEL key field1 field2 ...删除一个或多个哈希表字段HLEN key获取指定哈希表中字段的数量HINCRBY key field increment对指定哈希中的指定字段做运算操作正数为加负数为减 模拟对象数据存储 HMSET userInfoKey name guide description dev age 24
OKHEXISTS userInfoKey name # 查看 key 对应的 value中指定的字段是否存在。
(integer) 1HGET userInfoKey name # 获取存储在哈希表中指定字段的值。
guideHGET userInfoKey age
24HGETALL userInfoKey # 获取在哈希表中指定 key 的所有字段和值
1) name
2) guide
3) description
4) dev
5) age
6) 24HSET userInfoKey name GuideGeGeHGET userInfoKey name
GuideGeGeHINCRBY userInfoKey age 2
(integer) 26 应用场景
对象数据存储场景
举例用户信息、商品信息、文章信息、购物车信息。相关命令HSET 设置单个字段的值、HMSET设置多个字段的值、HGET获取单个字段的值、HMGET获取多个字段的值。 Set集合
介绍
Redis 中的 Set 类型是一种无序集合集合中的元素没有先后顺序但都唯一有点类似于 Java 中的 HashSet 。当你需要存储一个列表数据又不希望出现重复数据时Set 是一个很好的选择并且 Set 提供了判断某个元素是否在一个 Set 集合内的重要接口这个也是 List 所不能提供的。
你可以基于 Set 轻易实现交集、并集、差集的操作比如你可以将一个用户所有的关注人存在一个集合中将其所有粉丝存在一个集合。这样的话Set 可以非常方便的实现如共同关注、共同粉丝、共同喜好等功能。这个过程也就是求交集的过程 常用命令
命令介绍SADD key member1 member2 ...向指定集合添加一个或多个元素SMEMBERS key获取指定集合中的所有元素SCARD key获取指定集合的元素数量SISMEMBER key member判断指定元素是否在指定集合中SINTER key1 key2 ...获取给定所有集合的交集SINTERSTORE destination key1 key2 ...将给定所有集合的交集存储在 destination 中SUNION key1 key2 ...获取给定所有集合的并集SUNIONSTORE destination key1 key2 ...将给定所有集合的并集存储在 destination 中SDIFF key1 key2 ...获取给定所有集合的差集SDIFFSTORE destination key1 key2 ...将给定所有集合的差集存储在 destination 中SPOP key count随机移除并获取指定集合中一个或多个元素SRANDMEMBER key count随机获取指定集合中指定数量的元素 基本操作 SADD mySet value1 value2
(integer) 2SADD mySet value1 # 不允许有重复元素因此添加失败
(integer) 0SMEMBERS mySet
1) value1
2) value2SCARD mySet
(integer) 2SISMEMBER mySet value1
(integer) 1SADD mySet2 value2 value3
(integer) 2
mySet : value1、value2 。mySet2value2、value3 。 求交集 SINTERSTORE mySet3 mySet mySet2
(integer) 1SMEMBERS mySet3
1) value2
求并集 SUNION mySet mySet2
1) value3
2) value2
3) value1
求差集 SDIFF mySet mySet2 # 差集是由所有属于 mySet 但不属于 A 的元素组成的集合
1) value1 应用场景
需要存放的数据不能重复的场景
举例网站 UV 统计数据量巨大的场景还是 HyperLogLog更适合一些、文章点赞、动态点赞等场景。相关命令SCARD获取集合数量 。 需要获取多个数据源交集、并集和差集的场景
举例共同好友(交集)、共同粉丝(交集)、共同关注(交集)、好友推荐差集、音乐推荐差集、订阅号推荐差集交集 等场景。相关命令SINTER交集、SINTERSTORE 交集、SUNION 并集、SUNIONSTORE并集、SDIFF差集、SDIFFSTORE 差集。 需要随机获取数据源中的元素的场景
举例抽奖系统、随机点名等场景。相关命令SPOP随机获取集合中的元素并移除适合不允许重复中奖的场景、SRANDMEMBER随机获取集合中的元素适合允许重复中奖的场景