如果存在,如何获得价值指数?

时间:2017-11-24 12:42:10

标签: go redis

我需要存储字符串并将唯一的整数与每个字符串相关联。整数必须尽可能短/小。在Redis中可以做到吗?基本上我需要SADD之类的东西,而是返回集合中的元素数量,我需要它来返回插入元素的索引(新存储或现有)。

伪代码:

 // if mystring already exists in myset it returns its index
 // otherwise stores it and returns its index.
  index := storeOrReturnIndex(myset, mystring) 

2 个答案:

答案 0 :(得分:0)

使用散列图会覆盖您要查找的内容吗?

> HSET hashmap 0 "first string"
(integer) 1
> HSET hashmap 1 "second string"
(integer) 1
> HSET hashmap 2 "third string"
(integer) 1
> HGET hashmap 1
"second string"
> HLEN hashmap
3

您可以将最后修改的索引存储在以下键中:

> SET last_modified 1

然后用:

检索它
> GET last_modified

答案 1 :(得分:0)

您可以使用Redis INCR命令以原子方式获取新的唯一索引。

  

模式:计数器

     

计数器模式是使用Redis原子增量操作可以做的最明显的事情。这个想法只是在每次操作发生时向Redis发送INCR命令。例如,在Web应用程序中,我们可能想知道该用户一年中每天的页面浏览量。   为此,Web应用程序可以在每次用户执行页面视图时简单地递增密钥,创建连接用户ID的密钥名称和表示当前日期的字符串。   这个简单的模式可以通过多种方式扩展:

因此,无论您想要存储新项目(URL),都要使用INCR以原子方式获取下一个唯一的最小索引。然后,您可以使用HSET存储与项目关联的索引,并使用HGET获取项目的关联索引。