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

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

1.安装

可以查看这里的文章:http://www.linuxidc.com/Linux/2014-05/101544.htm

2.启动

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

[email protected]:/mnt/hgfs/Python/day7/redis-2.8.9/src$ ./redis-server 
[12681] 16 Oct 00:06:52.964 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
[12681] 16 Oct 00:06:52.967 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
[12681] 16 Oct 00:06:52.968 # Redis can‘t set maximum open files to 10032 because of OS error: Operation not permitted.
[12681] 16 Oct 00:06:52.968 # Current maximum open files is 1024. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase ‘ulimit -n‘.
                _._                                                  
           _.-``__ ‘‘-._                                             
      _.-``    `.  `_.  ‘‘-._           Redis 2.8.9 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ‘‘-._                                   
 (    ‘      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|‘` _.-‘|     Port: 6379
 |    `-._   `._    /     _.-‘    |     PID: 12681
  `-._    `-._  `-./  _.-‘    _.-‘                                   
 |`-._`-._    `-.__.-‘    _.-‘_.-‘|                                  
 |    `-._`-._        _.-‘_.-‘    |           http://redis.io        
  `-._    `-._`-.__.-‘_.-‘    _.-‘                                   
 |`-._`-._    `-.__.-‘    _.-‘_.-‘|                                  
 |    `-._`-._        _.-‘_.-‘    |                                  
  `-._    `-._`-.__.-‘_.-‘    _.-‘                                   
      `-._    `-.__.-‘    _.-‘                                       
          `-._        _.-‘                                           
              `-.__.-‘                                               

[12681] 16 Oct 00:06:52.974 # Server started, Redis version 2.8.9
[12681] 16 Oct 00:06:52.974 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add ‘vm.overcommit_memory = 1‘ to /etc/sysctl.conf and then reboot or run the command ‘sysctl vm.overcommit_memory=1‘ for this to take effect.
[12681] 16 Oct 00:06:52.976 * DB loaded from disk: 0.002 seconds
[12681] 16 Oct 00:06:52.977 * The server is now ready to accept connections on port 6379

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

3.交互式操作

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

[email protected]:/mnt/hgfs/Python/day7/redis-2.8.9/src$ ./redis-cli
127.0.0.1:6379>

基本操作:

#查看帮助
127.0.0.1:6379> help set

  SET key value [EX seconds] [PX milliseconds] [NX|XX]
  summary: Set the string value of a key
  since: 1.0.0
  group: string

#创建key-value
127.0.0.1:6379> set name xpleaf
OK

#获得key对应的value
127.0.0.1:6379> get name
"xpleaf"

#创建有时间的key-value
127.0.0.1:6379> set name2 CL ex 5
OK

#创建列表
127.0.0.1:6379> lpush stu_list xpleaf yonghaoye CL
(integer) 3
127.0.0.1:6379> lpush stu_list CLYYH
(integer) 4

#获取列表内容
127.0.0.1:6379> lrange stu_list 1 4
1) "CL"
2) "yonghaoye"
3) "xpleaf"
127.0.0.1:6379> lrange stu_list 0 4
1) "CLYYH"
2) "CL"
3) "yonghaoye"
4) "xpleaf"

#删除key-value或其它数据类型
127.0.0.1:6379> del name
(integer) 1

3.在Python交互器中使用redis

要使用Python来操作Redistribute,则需要安装Python与Redis通信的接口:

apt-get install python-redis

创建一个连接redis数据库的py文件,程序代码如下:

#!/usr/bin/env python
import redis
r = redis.Redis(host=‘localhost‘,port=6379,db=0)

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

[email protected]:/mnt/hgfs/Python/day7$ python
Python 2.7.3 (default, Aug  1 2012, 05:14:39) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tab,redis_conn3

基本操作:

#查看所有的key
>>> redis_conn3.r.keys()
[‘YourKey‘, ‘stu_list‘, ‘k1‘, ‘k3‘]

#创建key-value
>>> redis_conn3.r.set(‘k1‘, ‘v1‘)
True

#获取key所对应的value
>>> redis_conn3.r[‘k2‘]
‘v2‘
或
>>> redis_conn3.r.get(‘k2‘)
‘v2‘

#保存Python中的字典到Redis数据库中
>>> redis_conn3.r[‘Py_dict‘] = json.dumps(a)
>>> redis_conn3.r[‘Py_dict‘]
‘{"key": "value"}‘

#取出保存在Redis数据库中的Python字典
>>> b = json.loads(redis_conn3.r[‘Py_dict‘])
>>> b
{u‘key‘: u‘value‘}
>>> print b
{u‘key‘: u‘value‘}
>>> b[‘key‘]
u‘value‘
时间: 2024-12-16 06:27:26

【Python之旅】第七篇(二):Redis使用基础的相关文章

Python之旅(七)面向对象

三大编程范式 三大编程范式(这三者各有千秋,不分好坏): 面向过程编程 函数式编程 面向对象编程 面向过程编程 “面向过程”(Procedure Oriented)是一种以过程为中心的编程思想. 过程是指解决问题的步骤.例如问题:如何把大象放入一个冰箱?步骤:先打开冰箱,在将大象放入冰箱,最后关上冰箱.面向过程是一种较机械式的思维方式. 优点: 复杂的问题流程化,进而简单化(一个复杂的问题,分成一个个小的步骤去实现,实现小的步骤将会非常简单). 性能比面向对象高,因为类调用时需要实例化,比较消耗

【Python之旅】第二篇(七):集合

说明: ·类似于数学中学的集合,Python中的集合可以实现去重的功能,通过set()函数来实现: ·sets支持x in set, len(set)和 for x in set: ·作为一个无序的集合,sets 不记录元素位置或者插入点,因此,sets不支持indexing, slicing,或其它类序列(sequence-like)的操作: ·学习集合,主要是学习集合的一系列标准操作:集合创建.集合添加.集合删除.交并差集等: 1.创建集合:set() >>> a = range(1

Python开发【第七篇】:面向对象

Python之路[第五篇]:面向对象及相关 面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 ? 1 2 3 4 5 6 class Foo(object):     pass obj = Foo() isinstance(obj, Foo) 二.issubclass(sub, super) 检查sub类是否是 super 类的派生类 ? 1 2 3 4 5 6 7 cla

Python自动化 【第七篇】:Python基础-面向对象高级语法、异常处理、Scoket开发基础

本节内容: 1.     面向对象高级语法部分 1.1   静态方法.类方法.属性方法 1.2   类的特殊方法 1.3   反射 2.     异常处理 3.     Socket开发基础 1.     面向对象高级语法部分 1.1   静态方法.类方法.属性方法 1)   静态方法 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法.普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访

Python 学习日记第七篇 -- 函数相关

一.装饰器前戏-闭包简单来说,python中函数的闭包就是在内部函数里对外部作用域(但不是全局作用域)的变量进行引用,这么说,不太好理解,下面的示例帮助理解 def outer(): a = 1 def inner(): # 内部函数inner print(a) # 调用外部环境变量 return inner f = outer() f() 上面的示例就是一个闭包,inner是个内部函数,inner里调用外部作用域变量a,a不是全局变量:这样构成了一个闭包.上面这个例子外部变量是给定的,那么我们

Python网络编程之高级篇二

在上一篇中,我们深入探讨了TCP/IP协议的11种状态,理解这些状态对我们编写服务器的时候有很大的帮助,但一般写服务器都是使用C/Java语言,因为这些语言对高并发的支持特别好.我们写的这些简单的服务器主要是为了深入学习TCP/IP协议.IO操作以及Python中协程的原理.在上一篇中也提到非阻塞这个概念,在这一篇中,我们继续深入探讨IO模型,因为理解IO操作对我们深入学习异步编程有很大帮助.所以在这一节中我们主要是从Linux内核态和用户态的层面来考虑IO操作时会发生什么样的事情,Linux内

【Python之旅】第二篇(九):迭代器

说明:关于Python中迭代器的解释 Iterator是迭代器的意思,它的作用是一次产生一个数据项,直到没有为止.这样在 for 循环中就可以对它进行循环处理了.那么它与一般的序列类型(list, tuple等)有什么区别呢?它一次只返回一个数据项,占用更少的内存.但它需要记住当前的状态,以便返回下一数据项.它是一个有着next()方法的对象.而序列类型则保存了所有的数据项,它们的访问是通过索引进行的. 举个前面的例子来说就像readlines和xreadlines的区别,readlines是一

【Python之旅】第二篇(四):字典

说明: 显然Python中字典的学习过程与列表是一样的,主要是围绕下面的函数来进行重点学习: >>> xpleaf. xpleaf.clear( xpleaf.copy( xpleaf.get( xpleaf.has_key( xpleaf.items( xpleaf.keys( xpleaf.pop( xpleaf.popitem( xpleaf.setdefault( xpleaf.update( 1.基本操作 --创建一个字典 >>> xpleaf = { ...

Python 学习日记第七篇 -- 函数

一.函数  1.函数的使用场景及定义 在使用函数编程之前,我们一直是面向过程式编程,语句的堆积造成大量的代码重复,由此,函数应运而生,函数式编程是将反复使用的代码封装到函数中,使用时只需调用即可.函数的学习会让我们更快理解面向对象这一抽象的概念,面向对象即是对函数进行分类和封装. #函数的定义 def first_func():     print("This is my first function!") first_func() def:定义函数的关键字 first_func:函数

python之旅【第二篇】

1,文件操作 找到文件-----打开文件------文件操作-----------文件关闭 file_open = file(文件路径,模式) 读取文件: M.read() obj = M.readlines()--------- #一行行读取,并且obj为一个列表 关于读取模式: Table mode 模式 描述 r 以读方式打开文件,可读取文件信息. w 以写方式打开文件,可向文件写入信息.如文件存在,则清空该文件,再写入新内容 a 以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾