forked from huangzworks/redis
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgetset.html
176 lines (150 loc) · 7.41 KB
/
getset.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>GETSET — Redis 命令参考</title>
<link rel="stylesheet" href="../_static/pyramid.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '2.8',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="top" title="Redis 命令参考" href="../index.html" />
<link rel="up" title="String(字符串)" href="index.html" />
<link rel="next" title="INCR" href="incr.html" />
<link rel="prev" title="GETRANGE" href="getrange.html" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="../_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="incr.html" title="INCR"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="getrange.html" title="GETRANGE"
accesskey="P">previous</a> |</li>
<li><a href="../index.html">Redis 命令参考</a> »</li>
<li><a href="index.html" accesskey="U">String(字符串)</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="getset">
<span id="id1"></span><h1>GETSET<a class="headerlink" href="#getset" title="Permalink to this headline">¶</a></h1>
<p><strong>GETSET key value</strong></p>
<p>将给定 <code class="docutils literal"><span class="pre">key</span></code> 的值设为 <code class="docutils literal"><span class="pre">value</span></code> ,并返回 <code class="docutils literal"><span class="pre">key</span></code> 的旧值(old value)。</p>
<p>当 <code class="docutils literal"><span class="pre">key</span></code> 存在但不是字符串类型时,返回一个错误。</p>
<dl class="docutils">
<dt><strong>可用版本:</strong></dt>
<dd>>= 1.0.0</dd>
<dt><strong>时间复杂度:</strong></dt>
<dd>O(1)</dd>
<dt><strong>返回值:</strong></dt>
<dd><div class="first last line-block">
<div class="line">返回给定 <code class="docutils literal"><span class="pre">key</span></code> 的旧值。</div>
<div class="line">当 <code class="docutils literal"><span class="pre">key</span></code> 没有旧值时,也即是, <code class="docutils literal"><span class="pre">key</span></code> 不存在时,返回 <code class="docutils literal"><span class="pre">nil</span></code> 。</div>
</div>
</dd>
</dl>
<div class="highlight-python"><div class="highlight"><pre>redis> GETSET db mongodb # 没有旧值,返回 nil
(nil)
redis> GET db
"mongodb"
redis> GETSET db redis # 返回旧值 mongodb
"mongodb"
redis> GET db
"redis"
</pre></div>
</div>
<div class="section" id="id2">
<h2>模式<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
<p><a class="reference internal" href="#getset">GETSET</a> 可以和 <a class="reference internal" href="incr.html#incr"><span>INCR</span></a> 组合使用,实现一个有原子性(atomic)复位操作的计数器(counter)。</p>
<p>举例来说,每次当某个事件发生时,进程可能对一个名为 <code class="docutils literal"><span class="pre">mycount</span></code> 的 <code class="docutils literal"><span class="pre">key</span></code> 调用 <a class="reference internal" href="incr.html#incr"><span>INCR</span></a> 操作,通常我们还要在一个原子时间内同时完成获得计数器的值和将计数器值复位为 <code class="docutils literal"><span class="pre">0</span></code> 两个操作。</p>
<p>可以用命令 <code class="docutils literal"><span class="pre">GETSET</span> <span class="pre">mycounter</span> <span class="pre">0</span></code> 来实现这一目标。</p>
<div class="highlight-python"><div class="highlight"><pre>redis> INCR mycount
(integer) 11
redis> GETSET mycount 0 # 一个原子内完成 GET mycount 和 SET mycount 0 操作
"11"
redis> GET mycount # 计数器被重置
"0"
</pre></div>
</div>
</div>
</div>
<div class="section" id="discuss">
<h2>
讨论
<a class="headerlink" href="#discuss" title="永久链接至标题">¶</a>
</h2>
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'redis-command-cn'; // required: replace example with your forum shortname
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>
<div id="sponser">
<h2>赞助商</h2>
<a href="http://yunba.io/"><img src="../_static/yunba-logo.jpg"/></a>
<p><a href="http://yunba.io/">云巴(yunba.io)</a>,专业的App.Web.物联网实时通信后端云服务提供商。</p>
</div>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="incr.html" title="INCR"
>next</a> |</li>
<li class="right" >
<a href="getrange.html" title="GETRANGE"
>previous</a> |</li>
<li><a href="../index.html">Redis 命令参考</a> »</li>
<li><a href="index.html" >String(字符串)</a> »</li>
</ul>
</div>
<div class="footer">
© Copyright 2015, Redis.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.3.3.
</div>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-53959484-7', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>