Maison  >  Article  >  développement back-end  >  Explication détaillée de la façon d'installer et d'utiliser Redis en Python

Explication détaillée de la façon d'installer et d'utiliser Redis en Python

高洛峰
高洛峰original
2017-03-04 16:26:362235parcourir

Cet article présente principalement comment installer et utiliser redis en Python, analyse les étapes spécifiques d'installation et de configuration et analyse en détail les compétences d'utilisation spécifiques de la base de données redis avec des exemples. Les amis dans le besoin peuvent s'y référer

.

L'exemple de cet article décrit comment installer et utiliser redis en python. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

1. Installation

D'accord, j'avoue que je ne connais que l'installation la plus simple :

sudo apt-get install redis-server

package de support Python : (En fait, c'est juste un fichier, vous pouvez simplement l'obtenir et l'utiliser)

sudo apt-get install python-redis

2. Configuration

Configurez-le. Le fichier de configuration par défaut est : "/etc/redis/redis.conf"
Liaison IP :

"bind 127.0.0.1″ -> "bind 10.0.1.7″

Changer la synchronisation du disque en non-synchronisation ou synchronisation toutes les secondes Il est trop lent de synchroniser tout le temps :

<.>

"appendfsync always" -> "appendfsync no"

Vérifiez si l'exécution en arrière-plan est activée :

"daemonize yes"

ou tout ce que vous souhaitez définir, par exemple :

Délai d'expiration de la connexion : "timeout 300"

Niveau d'exécution : "avis de niveau de journalisation" (je pense personnellement que celui par défaut est plutôt bon. Sauf exception majeure, il n'est pas nécessaire de le modifier pour déboguer)

3. Utilisez

#! /usr/bin/env python
#coding=utf-8
import redis
print redis.__file__
# 连接,可选不同数据库
r = redis.Redis(host=&#39;10.0.1.7&#39;, port=6379, db=1)
# -------------------------------------------
# 看信息
info = r.info()
for key in info:
 print "%s: %s" % (key, info[key])
# 查数据库大小
print &#39;\ndbsize: %s&#39; % r.dbsize()
# 看连接
print "ping %s" % r.ping()
# 选数据库
#r.select(2)
# 移动数据去2数据库
#r.move(&#39;a&#39;,2)
# 其他
#r.save(&#39;a&#39;) # 存数据
#r.lastsave(&#39;a&#39;) # 取最后一次save时间
#r.flush() #刷新
#r.shutdown() #关闭所有客户端,停掉所有服务,退出服务器
#
#--------------------------------------------
# 它有四种类型: string(key,value)、list(序列)、set(集合)、zset(有序集合,多了一个顺序属性)
# 不知道你用的哪种类型?
# print r.get_type(&#39;a&#39;) #可以告诉你
# -------------------------------------------
# string操作
print &#39;-&#39;*20
# 塞数据
r[&#39;c1&#39;] = &#39;bar&#39;
#或者
r.set(&#39;c2&#39;,&#39;bar&#39;)
#这里有个 getset属性,如果为True 可以在存新数据时将上次存储内容同时搞出来
print &#39;getset:&#39;,r.getset(&#39;c2&#39;,&#39;jj&#39;)
#如果你想设置一个递增的整数 每执行一次它自加1:
print &#39;incr:&#39;,r.incr(&#39;a&#39;)
#如果你想设置一个递减的整数 please:
print &#39;decr:&#39;,r.decr(&#39;a&#39;)
# 取数据
print &#39;r[&#39;&#39;]:&#39;,r[&#39;c1&#39;]
#或者
print &#39;get:&#39;,r.get(&#39;a&#39;)
#或者 同时取一批
print &#39;mget:&#39;,r.mget(&#39;c1&#39;,&#39;c2&#39;)
#或者 同时取一批 它们的名字(key)很像 而恰好你又不想输全部
print &#39;keys:&#39;,r.keys(&#39;c*&#39;)
#又或者 你只想随机取一个:
print &#39;randomkey:&#39;,r.randomkey()
# 查看一个数据有没有 有 1 无0
print &#39;existes:&#39;,r.exists(&#39;a&#39;)
# 删数据 1是删除成功 0和None是没这个东西
print &#39;delete:&#39;,r.delete(&#39;cc&#39;)
# 哦对了 它是支持批量操作的
print &#39;delete:&#39;,r.delete(&#39;c1&#39;,&#39;c2&#39;)
# 其他
r.rename(&#39;a&#39;,&#39;c3&#39;) #呃.改名
r.expire(&#39;c3&#39;,10) #让数据10秒后过期 说实话我不太明白么意思
r.ttl(&#39;c3&#39;) #看剩余过期时间 不存在返回-1
#--------------------------------
# 序列(list)操作
print &#39;-&#39;*20
# 它是两头通的
# 塞入
r.push(&#39;b&#39;,&#39;gg&#39;)
r.push(&#39;b&#39;,&#39;hh&#39;)
# head 属性控制是不是从另一头塞
r.push(&#39;b&#39;,&#39;ee&#39;,head=True)
# 看长度
print &#39;list len:&#39;,r.llen(&#39;b&#39;)
# 列出一批出来
print &#39;list lrange:&#39;,r.lrange(&#39;b&#39;,start=0,end=-1)
# 取出一位
print &#39;list index 0:&#39;,r.lindex(&#39;b&#39;,0)
# 修剪列表
#若start 大于end,则将这个list清空
print &#39;list ltrim :&#39;,r.ltrim(&#39;b&#39;,start=0,end=3) #只留 从0到3四位
# 排序
# 这可是个大工程
#--------------------------------
# 集合(set)操作
# 塞数据
r.sadd(&#39;s&#39;, &#39;a&#39;)
# 判断一个set长度为多少 不存在为0
r.scard(&#39;s&#39;)
# 判断set中一个对象是否存在
r.sismember(&#39;s&#39;,&#39;a&#39;)
# 求交集
r.sadd(&#39;s2&#39;,&#39;a&#39;)
r.sinter(&#39;s1&#39;,&#39;s2&#39;)
#求交集并将结果赋值
r.sinterstore(&#39;s3&#39;,&#39;s1&#39;,&#39;s2&#39;)
# 看一个set对象
r.smembers(&#39;s3&#39;)
# 求并集
r.sunion(&#39;s1&#39;,&#39;s2&#39;)
# 阿 我想聪明的你已经猜到了
#求并集 并将结果返回
r.sunionstore(&#39;ss&#39;,&#39;s1&#39;,&#39;s2&#39;,&#39;s3&#39;)
# 求不同
# 在s1中有,但在s2和s3中都没有的数
r.sdiff(&#39;s1&#39;,&#39;s2&#39;,&#39;s3&#39;)
r.sdiffstore(&#39;s4&#39;,&#39;s1&#39;,&#39;s2&#39;)# 这个你懂的
# 取个随机数
r.srandmember(&#39;s1&#39;)
#-------------------------------------
#zset 有序set
#&#39;zadd&#39;, &#39;zcard&#39;, &#39;zincr&#39;, &#39;zrange&#39;, &#39;zrangebyscore&#39;, &#39;zrem&#39;, &#39;zscore&#39;
# 分别对应
#添加, 数量, 自加1,取数据,按照积分(范围)取数据,删除,取积分
# 我靠 你玩死我了 redis!
# 今天在实验中,我尝试插入一条zset类型数据:
r1.zset(u&#39;www.liyi99.com&#39;,&#39;liwu&#39;,3)
# 插入成功
# 我继续插入
r1.zset(u&#39;www.liyi99,com&#39;,u&#39;\u9001\u793c&#39;,5)
#报错:
#UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xe4 in position 0: ordinal not in range(128)
#这次插入的是礼物的中文词 unicode编码
#为什么会失败那,这条数据是我从redis里面取出来然后没做任何修改再插入的阿
#redis返回和接受的数据类型都是unicode编码的阿
#好吧,我们再次插入试试
#再次插入
r1.zset(&#39;www.liyi99.com&#39;,u&#39;\u9001\u793c&#39;,5)
#成功了
#插入
r1.zset(&#39;www.liyi99.com&#39;,&#39;礼物&#39;,5)
#依然成功,跟入redis.py 1024行
return self.send_command(&#39;ZADD %s %s %s\r\n%s\r\n&#39; % (
  key, score, len(member), member))
# 哦 万恶的编码转换!
#不过取的时候,不论第一个是何种类型的数据都无关系
Pour des articles plus détaillés sur la façon d'installer Python et d'utiliser Redis, veuillez faire attention à le site PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn