【原创】 linux-python-redis…

本文介绍如何在Linux环境下安装Redis,并使用Python的redis-py库进行简单的读写操作。包括单条数据与批量数据的处理方法及性能对比。
linux-python-redis(NOSQL)简单操作

原创所有,转载请注明本文超链接地址以及作者,谢谢! http://blog.sina.com.cn/s/blog_83dc494d0101c6lc.html
又接触了一个新东西哈,redis数据库,貌似听说就是NOSQL,这种数据库的特点就是只有两列,key/values (列名,数据),说一般微博之类的都用这个存储数据的。废话不说,看步骤。
首先下载redis数据库
1. -- >wget  http://download.redis.io/releases/redis-2.6.16.tar.gz #或者到网站下载http://redis.io
2. -- > tar -zxvf redis-2.6.16 #解压
3. -- > cd redis-2.6.16 
4. -- > make #编译
5. -- > make install
6. -- > cd untils
7. -- > ./install_server
8. -- > redis-server #运行redis数据库

下载python对redis数据库的支持 redis-py
下载后进入redis-py文件夹内
2   -->cd   redis-py/trunk/   #进入配置文件夹内
3   -->sudo python setup.py install #配置redis-py,
4   -->rm -rf redis-py #返回到redis-py所在文件夹,删除掉即可(第三步已经把redis-py所需要的库配置到了python所在的目录)

mkdir /home/zhangzhipeng/py/redis_test #创建一个写程序的目录(自由支配)
cd /home/zhangzhipeng/py/redis_test
vi redis_test.py
---------------------------------------------------------------------
#!/usr/bin/python
#!coding:utf-8
import redis #导入redis-py模块
class redis_db:
  def __init__(self):
    self.host = 'localhost' #主机,本机为localhost
    self.port = 6379 #段口号,默认为6379
  def read(self,key):
    rd = redis.StrictRedis(host=self.host,port=self.port)#链接到服务器
    value = rd.get(key)#用get方法获取key所对应的value
    print value #打印结果
    return value
  def write(self.key,value):
    wd = redis.StrictRedis(host=self.host,port=self.port)#链接到服务器
    wd.set(key,value)#用set方法将对应的key,value添加到数据库中
if __name__ =='__main__':
  db = new redis_db() #new一个类
  key = 'apple_price_2013_10_20'
  value = '3.4'
  db.write(key,value)
  db.read(key)
---------------------------------------------------------------------
ESC --> : --> wq -->Enter
python redis_test.py
======================================
下面再看一下对大数据,大量的数据进行读写的操作。
vi redis_more_test.py
----------------------------------------------------------------------
#!/usr/bin/python
#!coding:utf-8

import redis
class redis_db:
  def __init__(self):
    self.host = 'localhost' #主机,本机为localhost
    self.port = 6379 #段口号,默认为6379 
  def read_more(self,keys):
    """keys 是列表类型
    """
    rd = redis.StrictRedis(host=self.host,port=self.port)#链接到服务器
    values = rd.mget(keys)#用get方法获取key所对应的value
    print values #打印结果
    return value
  def write_more(self,values):
    """data 是字典类型
    """
    wd = redis.StrictRedis(host=self.host,port=self.port)#链接到服务器
    wd.mset(values)#用set方法将对应的key,value添加到数据库中

def test():
  """this is a test.
  """
  keys = []
  values ={}
  for i in range(10):
    key = 'apple_price_'+str(i)
    keys.append(key)
    values[key] =   str(i)
  db = new redis_db()
  db.mset(values)
  db.mget(keys)    
if __name__ =='__main__':
  test()
---------------------------------------------------------------------
ESC --> : --> wq -->Enter
python redis_test.py
======================================
当然,有的人会问单条for循环存储和for循环后批量存储区别在哪?区别很大,假如你有1W数据,可以分别测试一下存取1W条数据的时间。1W条的批量处理,时间为1.5s以下,而单条存储的时候上10s也不足为怪。
下面我直接把握的代码放上来,供大家借鉴学习(其实我也是照搬的```~~),而且我把keys和values写到__init__函数块中了当时主要是脑子抽筋了,反正用来练习的。
-------------------------------------------------------------------
#!/usr/bin/python
import redis #导入redis 模块
import datetime #时间模块

class redis_data():
  def __init__(self):
    self.host='localhost'#主机
    self.port=6379 #端口
    self.key = None #key值
    self.value = None value值
    self.keys=[]#keys列表
    self.values={}#values字典,{key:value,key:value}
##################单条操作###################
  def read(self,key):
    rd = redis.StrictRedis(host=self.host, port=self.port)
    value = rd.get(key)
    return value
  def write(self,key,value):
    wd = redis.StrictRedis(host=self.host, port=self.port)
    wd.set(key,value)
    return
##################批量操作###################
  def add_key(self,key):
    self.keys.append(key)
  def read_more(self):
    rd = redis.StrictRedis(host=self.host, port=self.port)
    values = rd.mget(self.keys)

  def add_values(self,key,value):
    self.values[key]=value
  def write_more(self):
    wd = redis.StrictRedis(host=self.host, port=self.port)
    wd.mset(self.values)
####################测试用例##################
#------------       test   ----------------
def test_0(data): #单条读写--用来测试能否对数据库进行读写
  data.write('meituan','88008')
  rd = data.read('meituan')

def test_2(data):#批量读写--测试对比时间
  for i in range(10000): #将keys和values设置好
    data.add_values('meituan'+str(i),str(i+1))
    data.keys.append('meituan'+str(i))

  print'-'*15,'more write','-'*15 #批量写1W条数据
  start_time = datetime.datetime.now() #开始时间
  data.write_more()
  end_time = datetime.datetime.now() #结束时间
  print 'more write time:',end_time-start_time#批量写1W,用时

  print'-'*15,'more read','-'*15#批量读1W数据
  start_time = datetime.datetime.now()
  data.read_more()
  end_time = datetime.datetime.now()
  print 'more read time:',end_time-start_time #批量读1W,用时

  print '-'*15,'read one more','-'*15#单条读1W数据
  start_time = datetime.datetime.now()
  for i in data.keys:
    data.read('meituan'+str(i))
  end_time = datetime.datetime.now()
  print 'read one more time:',end_time - start_time#单条读1W,用时

  print '-'*15,'write one more','-'*15#单条写1W数据
  start_time = datetime.datetime.now()
  for i in range(10000):
    data.write('dazhong'+str(i),str(i+1))
  end_time = datetime.datetime.now()
  print 'write one more time:',end_time - start_time#单条写1W,用时
#-----------     test end -----------
if __name__ == "__main__":
  data = database()
  test_2(data)
------------------------------------------------------------------------------------
看看效果
【原创】 <wbr>linux-python-redis(NOSQL)简单操作
同样是1W条数据
get     -->5.088s
mget -->0.109s
------
set     -->5.141s
mset -->0.043s
可见差距之大,所以尽量存储一段时间或者一定数量后再进行读写。
好了redis数据库基础操作结束。

原创所有,转载请注明本文超链接地址以及作者,谢谢! http://blog.sina.com.cn/s/blog_83dc494d0101c6lc.html
内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值