开源项目

知识点

相关文章

更多

最近更新

更多

Memcached incr/decr 自增或自减操作

2019-04-26 17:04|来源: 网路

Memcached incr 与 decr 命令

Memcached incr 与 decr 命令用于对已存在的 key(键) 的数字值进行自增或自减操作。

incr 与 decr 命令操作的数据必须是十进制的32位无符号整数。

如果 key 不存在返回 NOT_FOUND,如果键的值不为数字,则返回 CLIENT_ERROR,其他错误返回 ERROR


incr 命令

语法:

incr 命令的基本语法格式如下:

incr key increment_value

参数说明如下:

  • key:键值 key-value 结构中的 key,用于查找缓存值。

  • increment_value: 增加的数值。

实例

在以下实例中,我们使用 visitors 作为 key,初始值为 10,之后进行加 5 操作。

set visitors 0 900 2
10
STORED
get visitors
VALUE visitors 0 2
10
END
incr visitors 5
15
get visitors
VALUE visitors 0 2
15
END

输出

输出信息说明:

  • NOT_FOUND:key 不存在。

  • CLIENT_ERROR:自增值不是对象。

  • ERROR其他错误,如语法错误等。


decr 命令

decr 命令的基本语法格式如下:

decr key decrement_value

参数说明如下:

  • key:键值 key-value 结构中的 key,用于查找缓存值。

  • decrement_value: 减少的数值。

实例

set visitors 0 900 2
10
STORED
get visitors
VALUE visitors 0 2
10
END
decr visitors 5
5
get visitors
VALUE visitors 0 1
5
END

在以下实例中,我们使用 visitors 作为 key,初始值为 10,之后进行减 5 操作。

输出

输出信息说明:

  • NOT_FOUND:key 不存在。

  • CLIENT_ERROR:自增值不是对象。

  • ERROR其他错误,如语法错误等。

相关问答

更多
  • 1:当一个从数据库启动时,会向主数据库发送sync命令, 2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来 3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。 4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。
  • 1:当一个从数据库启动时,会向主数据库发送sync命令, 2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来 3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。 4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。
  • 原子性(atomicity):一个事务是一个不可分割的最小工作单位,事务中包括的诸操作要么都做,要么都不做。 Redis所有单个命令的执行都是原子性的,这与它的单线程机制有关; Redis命令的原子性不用考虑并发问题,可以方便的利用原子性自增操作INCR实现简单计数器功能;
  • 如果你的服务器只有一台,且数据库读写压力不大,就没必要使用Memcached。HttpRuntime.Cache是本地缓存,Memcached是分布式缓存,两者的区别在于: 本地缓存 本地缓存可能是大家用的最多的一种缓存方式了,不管是本地内存还是磁盘,其速度快,成本低,在有些场合非常有效。 但是对于web系统的集群负载均衡结构来说,本地缓存使用起来就比较受限制,因为当数据库数据发生变化时,你没有一个简单有效的方法去更新本地缓存;然而,你如果在不同的服务器之间去同步本地缓存信息,由于缓存的低时效性和高访问量的 ...
  • 原子性,就是执行这个指令时,不容许打断。以前化学认为原子不可再分,用”原子性“表示不能分,不能打断。
  • 原子性(atomicity):一个事务是一个不可分割的最小工作单位,事务中包括的诸操作要么都做,要么都不做。 Redis所有单个命令的执行都是原子性的,这与它的单线程机制有关; Redis命令的原子性不用考虑并发问题,可以方便的利用原子性自增操作INCR实现简单计数器功能;
  • 声明缓存实际上并不使用它。 Django文档指出了各种方法,您可以将Django配置为使用缓存,或在代码和模板中明确使用它。 Declaring a cache does not actually use it. The Django documentation points out various ways in which you can configure Django to use the cache, or explicitly use it in your code and templates. ...
  • 那么,我发现了这个问题! 为了了解每秒的请求,我使用了可用的memcache.php文件。 它告诉我每秒有350个请求。 问题在于,过去几天使用量有所增加,而且每秒的请求数只是整个正常运行时间的平均值。 按(点击+错过)/正常运行时间计算。 现在重新启动memcached后,这个平均值返回更多正确的值,实际上每秒钟有4000个请求。 tl; dr:第一篇文章中的错误统计。 正确的统计数据是:4000个请求/秒。 我想我的硬件根本无法应付这种情况。 Well, I've found the problem! ...
  • 它在文本协议中不受支持,因为它表达非常非常复杂,没有客户端会支持它,并且它提供的功能很少,你不能从文本协议中做到这一点。 它在二进制协议中得到支持,因为它是二进制操作的一个简单用例。 spymemcached隐式支持它 - 只需做一堆集并且魔术发生: http://dustin.github.com/2009/09/23/spymemcached-optimizations.html It's not supported in the text protocol because it'd be very, ...
  • 您只能存储与memcached群集中的内存一样多的键/值对。 当memcached用完空间时,它将使用LRU策略驱逐密钥。 如果您不希望逐出密钥,则可以指定-M参数。 You can only store as many key/value pairs as will fit into memory in your memcached cluster. When memcached runs out of space it will evict keys using an LRU policy. If yo ...