天天看点

【Python之旅】第七篇(二):Redis使用基础

0.说明

    由于学习开发监控软件的需要,因此需要使用到redis,这里简单介绍。

    注意,使用的环境为:ubuntu 15.10

1.安装

    可以采用源码安装,也可以采用apt-get来安装,都比较简单。

2.启动

    由于采用的是源码安装的方式,所以直接进入src目录,启动redis-server:

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

<code>xpleaf@xpleaf-machine:/mnt/hgfs/python/day7/redis-</code><code>2.8</code><code>.</code><code>9</code><code>/src$ ./redis-server </code>

<code>[</code><code>12681</code><code>] </code><code>16</code> <code>oct </code><code>00</code><code>:</code><code>06</code><code>:</code><code>52.964</code> <code># warning: no config file specified, using the </code><code>default</code> <code>config. in order to specify a config file </code><code>use</code> <code>./redis-server /path/to/redis.conf</code>

<code>[</code><code>12681</code><code>] </code><code>16</code> <code>oct </code><code>00</code><code>:</code><code>06</code><code>:</code><code>52.967</code> <code># you requested maxclients of </code><code>10000</code> <code>requiring at least </code><code>10032</code> <code>max file descriptors.</code>

<code>[</code><code>12681</code><code>] </code><code>16</code> <code>oct </code><code>00</code><code>:</code><code>06</code><code>:</code><code>52.968</code> <code># redis can't </code><code>set</code> <code>maximum open files to </code><code>10032</code> <code>because of os error: operation not permitted.</code>

<code>[</code><code>12681</code><code>] </code><code>16</code> <code>oct </code><code>00</code><code>:</code><code>06</code><code>:</code><code>52.968</code> <code># current maximum open files </code><code>is</code> <code>1024</code><code>. maxclients has been reduced to </code><code>4064</code> <code>to compensate </code><code>for</code> <code>low ulimit. if you need higher maxclients increase </code><code>'ulimit -n'</code><code>.</code>

<code>                </code><code>_._                                                  </code>

<code>           </code><code>_.-``__ </code><code>''</code><code>-._                                             </code>

<code>      </code><code>_.-``    `.  `_.  </code><code>''</code><code>-._           redis </code><code>2.8</code><code>.</code><code>9</code> <code>(</code><code>00000000</code><code>/</code><code>0</code><code>) </code><code>64</code> <code>bit</code>

<code>  </code><code>.-`` .-```.  ```\/    _.,_ </code><code>''</code><code>-._                                   </code>

<code> </code><code>(    '      ,       .-`  | `,    )     running </code><code>in</code> <code>stand alone mode</code>

<code> </code><code>|`-._`-...-` __...-.``-._|</code><code>'` _.-'</code><code>|     port: </code><code>6379</code>

<code> </code><code>|    `-._   `._    /     _.-'    |     pid: </code><code>12681</code>

<code>  </code><code>`-._    `-._  `-./  _.-</code><code>'    _.-'</code>                                   

<code> </code><code>|`-._`-._    `-.__.-</code><code>'    _.-'</code><code>_.-'|                                  </code>

<code> </code><code>|    `-._`-._        _.-</code><code>'_.-'</code>    <code>|           http:</code><code>//redis.io        </code>

<code>  </code><code>`-._    `-._`-.__.-</code><code>'_.-'</code>    <code>_.-'                                   </code>

<code> </code><code>|    `-._`-._        _.-</code><code>'_.-'</code>    <code>|                                  </code>

<code>      </code><code>`-._    `-.__.-</code><code>'    _.-'</code>                                       

<code>          </code><code>`-._        _.-'                                           </code>

<code>              </code><code>`-.__.-'                                               </code>

<code>[</code><code>12681</code><code>] </code><code>16</code> <code>oct </code><code>00</code><code>:</code><code>06</code><code>:</code><code>52.974</code> <code># server started, redis version </code><code>2.8</code><code>.</code><code>9</code>

<code>[</code><code>12681</code><code>] </code><code>16</code> <code>oct </code><code>00</code><code>:</code><code>06</code><code>:</code><code>52.974</code> <code># warning overcommit_memory </code><code>is</code> <code>set</code> <code>to </code><code>0</code><code>! background save may fail under low memory condition. to fix </code><code>this</code> <code>issue add </code><code>'vm.overcommit_memory = 1'</code> <code>to /etc/sysctl.conf and then reboot or run the command </code><code>'sysctl vm.overcommit_memory=1'</code> <code>for</code> <code>this</code> <code>to take effect.</code>

<code>[</code><code>12681</code><code>] </code><code>16</code> <code>oct </code><code>00</code><code>:</code><code>06</code><code>:</code><code>52.976</code> <code>* db loaded from disk: </code><code>0.002</code> <code>seconds</code>

<code>[</code><code>12681</code><code>] </code><code>16</code> <code>oct </code><code>00</code><code>:</code><code>06</code><code>:</code><code>52.977</code> <code>* the server </code><code>is</code> <code>now ready to accept connections on port </code><code>6379</code>

    出现上面所示的提示,说明已经正常启动了redis。

3.交互式操作

    进入src目录,运行redis-cli即可进入redis交互界面:

<code>xpleaf@xpleaf-machine:/mnt/hgfs/python/day7/redis-</code><code>2.8</code><code>.</code><code>9</code><code>/src$ ./redis-cli</code>

<code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>6379</code><code>&gt;</code>

    基本操作:

28

29

30

31

32

33

34

35

36

37

38

39

40

<code>#查看帮助</code>

<code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>6379</code><code>&gt; help </code><code>set</code>

<code>  </code><code>set key value [ex seconds] [px milliseconds] [nx|xx]</code>

<code>  </code><code>summary: set the string value of a key</code>

<code>  </code><code>since: </code><code>1.0</code><code>.</code><code>0</code>

<code>  </code><code>group: string</code>

<code>#创建key-value</code>

<code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>6379</code><code>&gt; </code><code>set</code> <code>name xpleaf</code>

<code>ok</code>

<code>#获得key对应的value</code>

<code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>6379</code><code>&gt; </code><code>get</code> <code>name</code>

<code>"xpleaf"</code>

<code>#创建有时间的key-value</code>

<code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>6379</code><code>&gt; </code><code>set</code> <code>name2 cl ex </code><code>5</code>

<code>#创建列表</code>

<code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>6379</code><code>&gt; lpush stu_list xpleaf yonghaoye cl</code>

<code>(integer) </code><code>3</code>

<code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>6379</code><code>&gt; lpush stu_list clyyh</code>

<code>(integer) </code><code>4</code>

<code>#获取列表内容</code>

<code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>6379</code><code>&gt; lrange stu_list </code><code>1</code> <code>4</code>

<code>1</code><code>) </code><code>"cl"</code>

<code>2</code><code>) </code><code>"yonghaoye"</code>

<code>3</code><code>) </code><code>"xpleaf"</code>

<code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>6379</code><code>&gt; lrange stu_list </code><code>0</code> <code>4</code>

<code>1</code><code>) </code><code>"clyyh"</code>

<code>2</code><code>) </code><code>"cl"</code>

<code>3</code><code>) </code><code>"yonghaoye"</code>

<code>4</code><code>) </code><code>"xpleaf"</code>

<code>#删除key-value或其它数据类型</code>

<code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>6379</code><code>&gt; del name</code>

<code>(integer) </code><code>1</code>

3.在python交互器中使用redis

要使用python来操作redistribute,则需要安装python与redis通信的接口:

<code>apt-</code><code>get</code> <code>install python-redis</code>

在交互器中连接redis数据库:

<code>&gt;&gt;&gt; </code><code>import</code> <code>redis</code>

<code>&gt;&gt;&gt; r = redis.redis(</code><code>'127.0.0.1'</code><code>, port=</code><code>6379</code><code>, db=</code><code>0</code><code>)</code>

基本操作

<code>#查看所有的key</code>

<code>&gt;&gt;&gt; r.keys()</code>

<code>[</code><code>'yourkey'</code><code>, </code><code>'stu_list'</code><code>, </code><code>'k1'</code><code>, </code><code>'k3'</code><code>]</code>

<code>&gt;&gt;&gt; r.</code><code>set</code><code>(</code><code>'xpleaf'</code><code>, </code><code>'xpleaf'</code><code>)</code>

<code>true</code>

<code>#获取key所对应的value</code>

<code>&gt;&gt;&gt; r[</code><code>'xpleaf'</code><code>]</code>

<code>'xpleaf'</code>

<code>或</code>

<code>&gt;&gt;&gt; r.</code><code>get</code><code>(</code><code>'xpleaf'</code><code>)</code>

<code>#保存python中的字典到redis数据库中</code>

<code>&gt;&gt;&gt; </code><code>import</code> <code>json</code>

<code>&gt;&gt;&gt; mydict = {</code><code>'name'</code><code>: </code><code>'xpleaf'</code><code>, </code><code>'age'</code><code>: </code><code>21</code><code>, </code><code>'loving'</code><code>: </code><code>'cl'</code><code>}</code>

<code>&gt;&gt;&gt; r[</code><code>'py_mydict'</code><code>] = json.dumps(mydict)</code>

<code>&gt;&gt;&gt; </code>

<code>&gt;&gt;&gt; r[</code><code>'py_mydict'</code><code>]</code>

<code>'{"age": 21, "name": "xpleaf", "loving": "cl"}'</code>

<code>#取出保存在redis数据库中的python字典</code>

<code>&gt;&gt;&gt; a = json.loads(r[</code><code>'py_mydict'</code><code>])</code>

<code>&gt;&gt;&gt; a</code>

<code>{u</code><code>'age'</code><code>: </code><code>21</code><code>, u</code><code>'name'</code><code>: u</code><code>'xpleaf'</code><code>, u</code><code>'loving'</code><code>: u</code><code>'cl'</code><code>}</code>

<code>&gt;&gt;&gt; a[</code><code>'name'</code><code>]</code>

<code>u</code><code>'xpleaf'</code>