<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Redis on 极一's Blog</title><link>https://www.jiyiblog.com/tag/Redis/</link><description>Recent content in Redis on 极一's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Wed, 25 Mar 2020 08:15:22 +0800</lastBuildDate><atom:link href="https://www.jiyiblog.com/tag/Redis/index.xml" rel="self" type="application/rss+xml"/><item><title>Typecho加速说 篇二——修复TpCache缓存评论者个人信息的问题</title><link>https://www.jiyiblog.com/archives/0324107.html</link><pubDate>Tue, 24 Mar 2020 18:09:00 +0800</pubDate><guid>https://www.jiyiblog.com/archives/0324107.html</guid><description>&lt;h2 id="前言"&gt;前言&#10;&lt;/h2&gt;&lt;p&gt;老高写的TpCache插件配合Redis确实是非常好用，但是一直存在一个很大的问题。当文章被评论后，评论者的个人信息也会被自动缓存下来（原本是保存在访客的cookies中的），导致下一个访客会看到上一个评论者的信息，造成信息泄露。&lt;/p&gt;&#10;&lt;p&gt;但是老高一直建议大家使用第三方评论系统，所以也没有去修复这个Bug。本篇文章通过修改comments.php文件解决了这个问题。&lt;/p&gt;&#10;&lt;h2 id="教程"&gt;教程&#10;&lt;/h2&gt;&lt;p&gt;首先编辑&lt;code&gt;/usr/themes/你的主题/component/comments.php&lt;/code&gt;文件&lt;/p&gt;&#10;&lt;p&gt;分别找到这三个语句并全部替换为空值：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="nx"&gt;php&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;remember&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;author&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&amp;lt;?php $this-&amp;gt;remember(&amp;#39;mail&amp;#39;); ?&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&amp;lt;?php $this-&amp;gt;remember(&amp;#39;url&amp;#39;); ?&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;找到下列语句;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;author_info&amp;#34;&lt;/span&gt; &lt;span class="nx"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;hide&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;并修改为：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;author_info&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后在文件底部插入一下代码：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="nx"&gt;php&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;hasLogin&lt;/span&gt;&lt;span class="p"&gt;()){&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;function getCookie(name){&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; var arr,reg=new RegExp(&amp;#34;(^| )&amp;#34;+name+&amp;#34;=([^;]*)(;|$)&amp;#34;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; if(arr=document.cookie.match(reg))&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; return unescape(decodeURI(arr[2]));&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; else&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; return null;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;function adduser(){ &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; document.getElementById(&amp;#39;author&amp;#39;).value = getCookie(&amp;#39;&amp;lt;?php echo md5($this-&amp;gt;request-&amp;gt;getUrlPrefix()); ?&amp;gt;__typecho_remember_author&amp;#39;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; document.getElementById(&amp;#39;mail&amp;#39;).value = getCookie(&amp;#39;&amp;lt;?php echo md5($this-&amp;gt;request-&amp;gt;getUrlPrefix()); ?&amp;gt;__typecho_remember_mail&amp;#39;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; document.getElementById(&amp;#39;url&amp;#39;).value = getCookie(&amp;#39;&amp;lt;?php echo md5($this-&amp;gt;request-&amp;gt;getUrlPrefix()); ?&amp;gt;__typecho_remember_url&amp;#39;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;adduser();&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&amp;lt;?php } ?&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&amp;lt;/script&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;保存即可。&lt;/p&gt;&#10;&lt;p&gt;参考文章：&lt;a class="link" href="https://www.siyunxi.com/2019/10/01/637.html" title="修复typecho使用缓存插件TpCache时缓存评论人的信息的问题"&#10; target="_blank" rel="noopener"&#10; &gt;修复typecho使用缓存插件TpCache时缓存评论人的信息的问题&lt;/a&gt;&lt;/p&gt;&#10;</description></item><item><title>Typecho加速说 篇一——使用Redis及TpCache缓存插件为网站加速</title><link>https://www.jiyiblog.com/archives/0324104.html</link><pubDate>Tue, 24 Mar 2020 17:26:00 +0800</pubDate><guid>https://www.jiyiblog.com/archives/0324104.html</guid><description>&lt;h2 id="前言"&gt;前言&#10;&lt;/h2&gt;&lt;p&gt;作为博客这种准静态网站，对全站进行动态缓存是一个非常不错的选择。不仅能够加快网站的访问速度，提升访客体验；同时也能保持在高并发状态下的稳定性，降低对服务器的资源占用。&lt;/p&gt;&#10;&lt;h2 id="介绍"&gt;介绍&#10;&lt;/h2&gt;&lt;h4 id="redis"&gt;Redis&#10;&lt;/h4&gt;&lt;p&gt;Redis 是完全开源免费的，遵守BSD协议，是一个高性能的key-value数据库。&lt;/p&gt;&#10;&lt;p&gt;Redis的优势：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。&lt;/li&gt;&#10;&lt;li&gt;丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。&lt;/li&gt;&#10;&lt;li&gt;原子 – Redis的所有操作都是原子性的，意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务，即原子性，通过MULTI和EXEC指令包起来。&lt;/li&gt;&#10;&lt;li&gt;丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Redis 与其他 key - value 缓存产品有以下三个特点：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Redis支持数据的持久化，可以将内存中的数据保存在磁盘中，重启的时候可以再次加载进行使用。&lt;/li&gt;&#10;&lt;li&gt;Redis不仅仅支持简单的key-value类型的数据，同时还提供list，set，zset，hash等数据结构的存储。&lt;/li&gt;&#10;&lt;li&gt;Redis支持数据的备份，即master-slave模式的数据备份。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="tpcache"&gt;TpCache&#10;&lt;/h4&gt;&lt;p&gt;TpCache是由老高开发的一款Typecho缓存插件，持Memcache，Redis，Mysql三种驱动。&lt;/p&gt;&#10;&lt;p&gt;项目地址：https://github.com/phpgao/TpCache&lt;/p&gt;&#10;&lt;h2 id="安装"&gt;安装&#10;&lt;/h2&gt;&lt;h3 id="redis-1"&gt;Redis&#10;&lt;/h3&gt;&lt;p&gt;以宝塔面板为例，可一键便捷安装Redis。打开php管理，安装扩展，找到Redis并安装即可，如图：&#10;&lt;img alt="安装redis.jpg" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://www.jiyiblog.com/usr/uploads/2020/03/259453446.jpg"&gt;&lt;/p&gt;&#10;&lt;p&gt;之前看到有的文章说需要开启Redis端口的安全策略，博主建议千万不要这么做，因为会把端口开放给外网，而TpCache是不支持密码连接Redis的。这种操作会使任何人都能访问并管理Redis，很危险。&lt;/p&gt;&#10;&lt;h3 id="tpcache-1"&gt;TpCache&#10;&lt;/h3&gt;&lt;p&gt;到项目地址下载插件包并解压，修改文件夹名为TpCache，上传到Typecho插件目录（&lt;code&gt;/usr/plugins&lt;/code&gt;),接着到后台启用插件。&#10;&lt;img alt="配置TpCahce.jpg" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://www.jiyiblog.com/usr/uploads/2020/03/963459629.jpg"&gt;&#10;如果博客使用https则开启SSL，缓存驱动选择Redis，端口默认为6379（可到宝塔面板修改），保存设置即可启用Typecho的Redis。&lt;/p&gt;&#10;&lt;h2 id="管理"&gt;管理&#10;&lt;/h2&gt;&lt;p&gt;在宝塔面板的软件商店中，安装Redis数据管理工具，即可对Redis数据进行管理查看，如图：&#10;&lt;img alt="Redis数据管理.jpg" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://www.jiyiblog.com/usr/uploads/2020/03/702866326.jpg"&gt;&lt;/p&gt;&#10;&lt;p&gt;如需清除Redis缓存，在插件中的最后一项选择清除所有数据，保存设置即可。&lt;/p&gt;&#10;&lt;h2 id="后记"&gt;后记&#10;&lt;/h2&gt;&lt;p&gt;启用Redis后对博客的访问速度和稳定性提升很大，但缓存也带来了一些小问题，例如自动保存上一个访客的评论帐号等，后面的文章将会着重修复这些问题。&lt;/p&gt;&#10;</description></item></channel></rss>