天天看点

python之redis

运行结果:

 View Code

redis基本操作-2(供拓展)

上面是redis的基本操作,建议一句句实验下。

redis是一种no-sql缓存数据库。数据是存在缓存中的。所以你如果重启redis-server,会发现之前存的数据都消失了! 为了解决这个问题,可在存数据后加上save命令, 数据便会存到磁盘,重启后数据不会消失。

python之redis

1. 连接池

使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。

2.计算网站UV实例

关于PV,UV,IP可以看看我下面的总结,具体也可以参考博客:http://playkid.blog.163.com/blog/static/56287260201361951919690/

setbit巨流弊的应用场景,想想什么情况下会用到这个功能呢?超大型的应用平台,比如新浪微博,我想查看当前正在登陆的用户,如何实现?当然你会想到,用户登陆后在数据库上的用户信息上做个标记,然后count去统计做标记的用户一共有多少,so,当前用户查看迎刃而解;OK,好好,首先每个用户登录都要设置标记,如果当前用户几个亿,那么得存几个亿的标记位,超级占用库的开销;现在就有一个无敌高效的办法,利用二进制位统计当前在线用户,什么意思呢?看下面的代码就能明白了:

比如:当前第500位用户在线,则将第500个bit置为1(默认为0)。bitcount统计二级制位中1的个数,setbit和bitcount配合使用,轻松解决当前在线用户数的问题。1字节=8位,那么10m=8000万位,即一个亿的在线用户也就10m多的内存就可搞定,这优化不得了!!

我会直接用运行的截图来讲hash,list,set基本操作,不然有点无聊~~

Hash操作,redis中Hash在内存中的存储格式如下图:

python之redis

1. hash基本操作

python之redis

List操作,redis中的List在在内存中按照一个name对应一个List来存储。如图:

python之redis

2. list基本操作

列表的某一个值前或后插入一个新值

python之redis

r.lpush()  从左边开始放数据

r.rpush()   从右边开始放数据

python之redis

 3. set基本操作

python之redis

1. 16个数据库

Redis有默认16个数据库,默认在0库,可以切换(eg:切换到15号数据库: select 15);但在python中,出于安全考虑,在python的API没有切换数据库的概念,可以在连接调用时指定调用的数据库,但一连接上了就不能切换了。

2. 有序集合

有序集合: 在集合的基础上,为每个元素排序;元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值,即:值和分数,分数专门用来做排序。

有序集合的基本操作

python之redis

应用场景:一登陆QQ右上角会有广告。

发布者:服务器

订阅者:个人用户

发布与订阅必须在同一个频道上(类似于收音机),不然发布方发布后,订阅方接收不到!

redis_helper.py文件(公共类)

redis_sub.py

redis_pub.py

运行结果(客户端): 可并发处理多个客户端。

本文转自xsster51CTO博客,原文链接:http://blog.51cto.com/12945177/1929494 ,如需转载请自行联系原作者