Skip to content

Commit d27a38a

Browse files
committed
Site updated: 2024-12-30 10:44:30
1 parent 1f47958 commit d27a38a

6 files changed

Lines changed: 336 additions & 294 deletions

File tree

ComputerScience/基本操作/Redis使用/index.html

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@
2020

2121
<script class="next-config" data-name="main" type="application/json">{"hostname":"simuleite.github.io","root":"/","images":"/images","scheme":"Muse","darkmode":false,"version":"8.21.0","exturl":false,"sidebar":{"position":"left","width_expanded":320,"width_dual_column":240,"display":"post","padding":18,"offset":12},"hljswrap":true,"copycode":{"enable":false,"style":null},"fold":{"enable":false,"height":500},"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"top_n_per_article":1,"unescape":false,"preload":false}}</script><script src="/js/config.js"></script>
2222

23-
<meta name="description" content="General # 返回给定模式的keysKEYS patterKEYS * # 返回全部KEYS set* # 返回set开头的keysEXISTS keyTYPE keyDEL key String SET key valueGET key# Set Extend TimeSETEX key seconds value# Set When Key Not ExistSETNX key va">
23+
<meta name="description" content="基本操作 General # 返回给定模式的keysKEYS patterKEYS * # 返回全部KEYS set* # 返回set开头的keysEXISTS keyTYPE keyDEL key String SET key valueGET key# Set Extend TimeSETEX key seconds value# Set When Key Not ExistSETNX">
2424
<meta property="og:type" content="article">
2525
<meta property="og:title" content="Redis使用">
2626
<meta property="og:url" content="http://simuleite.github.io/ComputerScience/%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/Redis%E4%BD%BF%E7%94%A8/index.html">
2727
<meta property="og:site_name" content="SMULET&#39;s BLOG">
28-
<meta property="og:description" content="General # 返回给定模式的keysKEYS patterKEYS * # 返回全部KEYS set* # 返回set开头的keysEXISTS keyTYPE keyDEL key String SET key valueGET key# Set Extend TimeSETEX key seconds value# Set When Key Not ExistSETNX key va">
28+
<meta property="og:description" content="基本操作 General # 返回给定模式的keysKEYS patterKEYS * # 返回全部KEYS set* # 返回set开头的keysEXISTS keyTYPE keyDEL key String SET key valueGET key# Set Extend TimeSETEX key seconds value# Set When Key Not ExistSETNX">
2929
<meta property="og:locale" content="zh_CN">
3030
<meta property="article:published_time" content="2024-10-26T16:00:00.000Z">
31-
<meta property="article:modified_time" content="2024-10-27T07:06:48.748Z">
31+
<meta property="article:modified_time" content="2024-12-30T02:42:59.732Z">
3232
<meta property="article:author" content="SIMULEITE">
3333
<meta property="article:tag" content="基本操作">
3434
<meta name="twitter:card" content="summary">
@@ -141,7 +141,7 @@
141141
<div class="sidebar-panel-container">
142142
<!--noindex-->
143143
<div class="post-toc-wrap sidebar-panel">
144-
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#general"><span class="nav-text"> General</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#string"><span class="nav-text"> String</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#hash"><span class="nav-text"> Hash</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#list"><span class="nav-text"> List</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#set"><span class="nav-text"> Set</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#sorted-set-zset"><span class="nav-text"> Sorted Set &#x2F; ZSet</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#redis-for-java"><span class="nav-text"> Redis for Java</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#redis-data-redis"><span class="nav-text"> Redis Data Redis</span></a></li></ol></li></ol></div>
144+
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C"><span class="nav-text"> 基本操作</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#general"><span class="nav-text"> General</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#string"><span class="nav-text"> String</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#hash"><span class="nav-text"> Hash</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#list"><span class="nav-text"> List</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#set"><span class="nav-text"> Set</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#sorted-set-zset"><span class="nav-text"> Sorted Set &#x2F; ZSet</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#redis-for-java"><span class="nav-text"> Redis for Java</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#redis-data-redis"><span class="nav-text"> Redis Data Redis</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E6%8C%81%E4%B9%85%E5%8C%96"><span class="nav-text"> 持久化</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#rdb"><span class="nav-text"> RDB</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#aof"><span class="nav-text"> AOF</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%BA%8B%E5%8A%A1"><span class="nav-text"> 事务</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%B9%90%E8%A7%82%E9%94%81"><span class="nav-text"> 乐观锁</span></a></div>
145145
</div>
146146
<!--/noindex-->
147147

@@ -215,9 +215,15 @@ <h1 class="post-title" itemprop="name headline">
215215
<i class="far fa-calendar"></i>
216216
</span>
217217
<span class="post-meta-item-text">发表于</span>
218-
219218

220-
<time title="创建时间:2024-10-27 00:00:00 / 修改时间:15:06:48" itemprop="dateCreated datePublished" datetime="2024-10-27T00:00:00+08:00">2024-10-27</time>
219+
<time title="创建时间:2024-10-27 00:00:00" itemprop="dateCreated datePublished" datetime="2024-10-27T00:00:00+08:00">2024-10-27</time>
220+
</span>
221+
<span class="post-meta-item">
222+
<span class="post-meta-item-icon">
223+
<i class="far fa-calendar-check"></i>
224+
</span>
225+
<span class="post-meta-item-text">更新于</span>
226+
<time title="修改时间:2024-12-30 10:42:59" itemprop="dateModified" datetime="2024-12-30T10:42:59+08:00">2024-12-30</time>
221227
</span>
222228

223229

@@ -229,18 +235,19 @@ <h1 class="post-title" itemprop="name headline">
229235

230236

231237

232-
<div class="post-body" itemprop="articleBody"><h1 id="general"><a class="markdownIt-Anchor" href="#general"></a> General</h1>
238+
<div class="post-body" itemprop="articleBody"><h2 id="基本操作"><a class="markdownIt-Anchor" href="#基本操作"></a> 基本操作</h2>
239+
<h2 id="general"><a class="markdownIt-Anchor" href="#general"></a> General</h2>
233240
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"># 返回给定模式的keys</span><br><span class="line">KEYS patter</span><br><span class="line">KEYS * # 返回全部</span><br><span class="line">KEYS set* # 返回set开头的keys</span><br><span class="line">EXISTS key</span><br><span class="line">TYPE key</span><br><span class="line">DEL key</span><br></pre></td></tr></table></figure>
234-
<h1 id="string"><a class="markdownIt-Anchor" href="#string"></a> String</h1>
241+
<h2 id="string"><a class="markdownIt-Anchor" href="#string"></a> String</h2>
235242
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">SET key value</span><br><span class="line">GET key</span><br><span class="line"># Set Extend Time</span><br><span class="line">SETEX key seconds value</span><br><span class="line"># Set When Key Not Exist</span><br><span class="line">SETNX key value</span><br></pre></td></tr></table></figure>
236-
<h1 id="hash"><a class="markdownIt-Anchor" href="#hash"></a> Hash</h1>
243+
<h2 id="hash"><a class="markdownIt-Anchor" href="#hash"></a> Hash</h2>
237244
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">HSET key field value</span><br><span class="line">HGET key field</span><br><span class="line">HDEL key field</span><br><span class="line"># Get All Fields</span><br><span class="line">HKEYS key</span><br><span class="line"># Get All Values</span><br><span class="line">HVALS key</span><br></pre></td></tr></table></figure>
238245
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line"> key[key]</span><br><span class="line"> item[</span><br><span class="line"> field1: value1</span><br><span class="line"> field2: value2</span><br><span class="line"> ]</span><br><span class="line"> key --&gt; item</span><br></pre></td></tr></table></figure>
239-
<h1 id="list"><a class="markdownIt-Anchor" href="#list"></a> List</h1>
246+
<h2 id="list"><a class="markdownIt-Anchor" href="#list"></a> List</h2>
240247
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">LPUSH key value1 value2</span><br><span class="line"># Get Key From Start To Stop</span><br><span class="line">LRANGE key start stop</span><br><span class="line"># Right POP</span><br><span class="line">RPOP key</span><br><span class="line"># List Length</span><br><span class="line">LLEN key</span><br></pre></td></tr></table></figure>
241-
<h1 id="set"><a class="markdownIt-Anchor" href="#set"></a> Set</h1>
248+
<h2 id="set"><a class="markdownIt-Anchor" href="#set"></a> Set</h2>
242249
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">SADD key mem1 mem2</span><br><span class="line">SMEMBERS key</span><br><span class="line"># Set Size</span><br><span class="line">SCARD key</span><br><span class="line">SINTER key1 key2</span><br><span class="line">SUNION key1 key2</span><br><span class="line"># Delete</span><br><span class="line">SREM key mem1 mem2</span><br></pre></td></tr></table></figure>
243-
<h1 id="sorted-set-zset"><a class="markdownIt-Anchor" href="#sorted-set-zset"></a> Sorted Set / ZSet</h1>
250+
<h2 id="sorted-set-zset"><a class="markdownIt-Anchor" href="#sorted-set-zset"></a> Sorted Set / ZSet</h2>
244251
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">ZADD key score1 mem1 score2 mem2</span><br><span class="line"># Show List</span><br><span class="line">ZRANGE key start stop (WITHSCORES)</span><br><span class="line"># Increse Member</span><br><span class="line">ZINCRBY key increment member</span><br><span class="line">ZREM key mem1 mem2</span><br></pre></td></tr></table></figure>
245252
<span id="more"></span>
246253
<h1 id="redis-for-java"><a class="markdownIt-Anchor" href="#redis-for-java"></a> Redis for Java</h1>
@@ -253,7 +260,20 @@ <h2 id="redis-data-redis"><a class="markdownIt-Anchor" href="#redis-data-redis">
253260
<figure class="highlight xml"><figcaption><span>pom.xml</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="comment">&lt;!-- Redis --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">dependency</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">groupId</span>&gt;</span>org.springframwork.boot<span class="tag">&lt;/<span class="name">groupId</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">artifactId</span>&gt;</span>spring-boot-starter-data-redis<span class="tag">&lt;/<span class="name">artifactId</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">dependency</span>&gt;</span></span><br></pre></td></tr></table></figure>
254261
<figure class="highlight yml"><figcaption><span>application.yml</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="attr">spring:</span></span><br><span class="line"> <span class="attr">redis:</span></span><br><span class="line"> <span class="attr">host:</span> <span class="string">localhost</span></span><br><span class="line"> <span class="attr">port:</span> <span class="number">6379</span></span><br><span class="line"> <span class="attr">password:</span> <span class="string">yourPassword</span></span><br></pre></td></tr></table></figure>
255262
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="meta">@Configuration</span></span><br><span class="line"><span class="meta">@Slf4j</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">RedisConfiguration</span> &#123;</span><br><span class="line"> <span class="meta">@Bean</span></span><br><span class="line"> <span class="keyword">public</span> RedisTemplate <span class="title function_">redisTemplate</span><span class="params">(RedisConnectionFactory redisConnectionFactory)</span> &#123;</span><br><span class="line"> log.info(<span class="string">&quot;开始创建Redis模板对象...&quot;</span>);</span><br><span class="line"> <span class="type">RedisTemplate</span> <span class="variable">redisTemplate</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">RedisTemplate</span>();</span><br><span class="line"> <span class="comment">// Set Redis Connection Factory Object</span></span><br><span class="line"> redisTemplate.setConnectionFactory(redisConnectionFactory);</span><br><span class="line"> <span class="comment">// Set Key Serializer</span></span><br><span class="line"> redisTemplate.setKeySerializer(<span class="keyword">new</span> <span class="title class_">StringRedisSerializer</span>());</span><br><span class="line"> <span class="keyword">return</span> redisTemplate;</span><br><span class="line"> &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure>
256-
263+
<h1 id="持久化"><a class="markdownIt-Anchor" href="#持久化"></a> 持久化</h1>
264+
<h2 id="rdb"><a class="markdownIt-Anchor" href="#rdb"></a> RDB</h2>
265+
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"># redis-cli</span><br><span class="line">save</span><br><span class="line"># 将会生成一个dump.rdb</span><br><span class="line">bgsave</span><br><span class="line"># 后台保存</span><br></pre></td></tr></table></figure>
266+
<h2 id="aof"><a class="markdownIt-Anchor" href="#aof"></a> AOF</h2>
267+
<p>保存执行的命令为日志。每次重启加载所有命令。</p>
268+
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"># redis.windows.conf</span><br><span class="line">appendonly yes</span><br><span class="line">appendsync always/everysec/no</span><br><span class="line">auto-aof-rewrite-percentage 100</span><br><span class="line">auto-aof-rewrite-min-size 64mb</span><br><span class="line"></span><br><span class="line"># redis-cli</span><br><span class="line">bgrewriteaof # 重新编排命令,让重启时执行更高效</span><br></pre></td></tr></table></figure>
269+
<h1 id="事务"><a class="markdownIt-Anchor" href="#事务"></a> 事务</h1>
270+
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"># 开始事务</span><br><span class="line">multi</span><br><span class="line"></span><br><span class="line">set key value</span><br><span class="line"># ... your command</span><br><span class="line"># 中途取消</span><br><span class="line">discard</span><br><span class="line"></span><br><span class="line"># 执行</span><br><span class="line">exec </span><br></pre></td></tr></table></figure>
271+
<h1 id="乐观锁"><a class="markdownIt-Anchor" href="#乐观锁"></a> 乐观锁</h1>
272+
<p>乐观锁:不认为别人会来抢占资源,所以会直接对数据进行操作,在操作时验证是否资源已被占用。</p>
273+
<blockquote>
274+
<p>乐观锁会比较数据是否和原数据一致,一致,说明没有人抢占资源,可以修改。</p>
275+
</blockquote>
276+
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">watch key</span><br><span class="line"># 通过版本号,而不通过值来判断</span><br><span class="line">unwatch key</span><br></pre></td></tr></table></figure>
257277
</div>
258278

259279

0 commit comments

Comments
 (0)