<?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 庞玉栋个人博客</title><link>https://pangyd.com/tags/redis/</link><description>Recent content in Redis on 庞玉栋个人博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 22 Nov 2018 19:06:54 +0800</lastBuildDate><atom:link href="https://pangyd.com/tags/redis/index.xml" rel="self" type="application/rss+xml"/><item><title>python的redis简单使用</title><link>https://pangyd.com/post/203-pythonredis/</link><pubDate>Mon, 05 Nov 2018 06:54:40 +0800</pubDate><guid>https://pangyd.com/post/203-pythonredis/</guid><description>&lt;p>安装的Python版本&amp;nbsp;3.6.1&lt;/p>
&lt;p>redis安装的2.8&lt;/p>
&lt;p>安装redis模块&lt;/p>
&lt;div class="cnblogs_code">
&lt;pre>pip install redis&lt;/pre>
&lt;/div>
&lt;p>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;/p>
&lt;p>简单使用&lt;/p>
&lt;p>redis-test.py&lt;/p>
&lt;div class="cnblogs_code">
&lt;pre>&lt;span>import&lt;/span>&lt;span> redis
r&lt;/span>=redis.Redis(host=&lt;span>'&lt;/span>&lt;span>127.0.0.1&lt;/span>&lt;span>'&lt;/span>,port=6609,db=&lt;span>0)
r.set(&lt;/span>&lt;span>'&lt;/span>&lt;span>name&lt;/span>&lt;span>'&lt;/span>,&lt;span>'&lt;/span>&lt;span>baby&lt;/span>&lt;span>'&lt;/span>&lt;span>)
&lt;/span>&lt;span>print&lt;/span>(r.get(&lt;span>'&lt;/span>&lt;span>name&lt;/span>&lt;span>'&lt;/span>&lt;span>))
&lt;/span>&lt;span>print&lt;/span>(r.dbsize())&lt;/pre>
&lt;/div>
&lt;p>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;/p>
&lt;p>使用connection pool来管理对一个redis server的所有连接，避免每次建立、释放连接的开销。&lt;/p>
&lt;p>默认，每个Redis实例都会维护一个自己的连接池。&lt;/p>
&lt;p>可以直接建立一个连接池，然后作为参数 Redis，这样就可以实现多个Redis实例共享一个连接池&lt;/p>
&lt;p>使用连接池&lt;/p>
&lt;div class="cnblogs_code">
&lt;pre> &lt;span>import&lt;/span>&lt;span> redis
 pool &lt;/span>= redis.ConnectionPool(host=&lt;span>'&lt;/span>&lt;span>127.0.0.1&lt;/span>&lt;span>'&lt;/span>,port=6609&lt;span>)
 r &lt;/span>= redis.Redis(connection_pool=&lt;span>pool)
 r.set(&lt;/span>&lt;span>'&lt;/span>&lt;span>name1&lt;/span>&lt;span>'&lt;/span>,&lt;span>'&lt;/span>&lt;span>lili&lt;/span>&lt;span>'&lt;/span>&lt;span>)
 &lt;/span>&lt;span>print&lt;/span>(r.get(&lt;span>'&lt;/span>&lt;span>name1&lt;/span>&lt;span>'&lt;/span>))&lt;/pre>
&lt;/div>
&lt;p>&amp;nbsp;&lt;/p>
&lt;p>应用：页面点击数&lt;/p>
&lt;p>　　需要对一系列页面记录点击次数，如果使用关系数据库来存储点击，可能存在大量的行级锁争用&lt;/p>
&lt;p>　　(1)当redis服务器启动时，可以从关系数据库读入点击数的初始值&lt;/p>
&lt;div class="cnblogs_code">
&lt;pre>&lt;span>import&lt;/span>&lt;span> redis
r&lt;/span>=redis.Redis(host=&lt;span>'&lt;/span>&lt;span>127.0.0.1&lt;/span>&lt;span>'&lt;/span>,port=6609,db=&lt;span>0)
r.set(&lt;/span>&lt;span>'&lt;/span>&lt;span>visits:100&lt;/span>&lt;span>'&lt;/span>,999)&lt;/pre>
&lt;/div>
&lt;p>　　(2)有人访问页面时&lt;/p>
&lt;div class="cnblogs_code">
&lt;pre>r.incr(&lt;span>'&lt;/span>&lt;span>visits:100&lt;/span>&lt;span>'&lt;/span>)&lt;/pre>
&lt;/div>
&lt;p>　　(3)获取页面点击数&lt;/p>
&lt;div class="cnblogs_code">
&lt;pre>r.get(&lt;span>'&lt;/span>&lt;span>visits:100&lt;/span>&lt;span>'&lt;/span>)&lt;/pre>
&lt;/div>
&lt;p>Pipeline 是 StrictRedis 类的子类，支持在一个请求里发送缓冲的多个命令。通过减少客户端和服务器之间往来的数据包，可以大大提高命令组的性能&lt;/p>
&lt;p>简单使用&lt;/p>
&lt;div class="cnblogs_code">
&lt;pre>&amp;gt;&amp;gt;&amp;gt;&lt;span>import&lt;/span>&lt;span> redis 
&lt;/span>&amp;gt;&amp;gt;&amp;gt;r=redis.Redis(host=&lt;span>'&lt;/span>&lt;span>127.0.0.1&lt;/span>&lt;span>'&lt;/span>,port=6609,db=&lt;span>0)
&lt;/span>&amp;gt;&amp;gt;&amp;gt; r.set(&lt;span>'&lt;/span>&lt;span>name&lt;/span>&lt;span>'&lt;/span>, &lt;span>'&lt;/span>&lt;span>baby&lt;/span>&lt;span>'&lt;/span>&lt;span>)
&lt;/span>&amp;gt;&amp;gt;&amp;gt; pipe =&lt;span> r.pipeline()
&lt;/span>&amp;gt;&amp;gt;&amp;gt; pipe.set(&lt;span>'&lt;/span>&lt;span>birthday&lt;/span>&lt;span>'&lt;/span>, &lt;span>'&lt;/span>&lt;span>2010&lt;/span>&lt;span>'&lt;/span>&lt;span>)
&lt;/span>&amp;gt;&amp;gt;&amp;gt; pipe.get(&lt;span>'&lt;/span>&lt;span>name&lt;/span>&lt;span>'&lt;/span>&lt;span>)
&lt;/span>&amp;gt;&amp;gt;&amp;gt; pipe.execute()&lt;/pre>
&lt;/div>
&lt;p>为了方便使用，所有缓冲到 pipeline 的命令返回 pipeline 对象本身&lt;/p></description></item></channel></rss>