redis是干什么用的,redis可以用来干什么
首先安装pip
一个
2
三
四
五
六
七
八
# apt-get安装python-pip
……
# pip install-proxy=http://172 . 1 . 2 . 608080 redis
下载redis-2.9.1.tar.gz(62kb):62kb已下载
运行setup.py(路径:/tmp/pip _ build _ root/redis/setup . py)egg _ infoforpackageredis
……
成功安装记录
学会升级。
您也可以使用easy_install来安装。
一个
easy_installredis
或者直接编译安装:
一个
2
三
四
pypi.python.org/packages/source/r/redis/redis-2.9.1.tar.gz wget 3359号
tarxvzfredis-2.9.1.tar.gz
cdredis-2.9.1
pythonsetup.pyinstall
2.简单redis运算
Redis连接实例是线程安全的,可以通过将redis连接实例设置为全局变量来直接使用。如果需要另一个Redis实例(或Redis数据库),必须重新创建Redis连接实例以获得新的连接。同样,python的redis也不实现select命令。
一个
2
三
四
五
六
七
八
九
10
11
12
13
14
15
16
17
18
19
准备导入
r=redis.redis(host=localhost ,port=6379,db=0)))))))))))))65
r .集(《郭》,《帅》)
真实的
郭.
“‘水’
r [过]
“‘水’
r.keys()).
[郭]
R.dbsize当前数据库包含多少数据?
1L
删除(郭)
一个
R.save执行“检查点”操作,并将数据写回磁盘。保存时阻止
真实的
r.get(郭);
R.flush db(清除# r中的所有数据
真实的
3.流水线操作
Pipeline是redis基类的一个子类,在提供单个请求时缓冲多个服务器命令。通过减少服务器和客户端之间重复的TCP数据库软件包,大大提高了批处理命令的执行能力。
一个
2
三
四
五
六
七
八
管道(--创建一个管道
p.set (hello , redis )
p.sadd(Faz , baz )
增量(数字)
p.execute().
[真,1,1 ]
r.get(Hello )).
“‘雷迪斯’
您可以编写管道命令,如下所示:
一个
p.set(你好),‘redis’。萨德)、FAZ、巴兹)。incr)、“num”)。执行)).
默认情况下,在管道中执行的命令的原子性是有保证的。可以通过执行pipe=r . pipeline(transaction=false)来禁用该属性。
4.应用场景的页面点击量
055-79000详细讲解这个经典场景。假设您需要记录一系列页面的点击量。比如论坛里的每一个帖子都会记录点击次数,比次数还多。
帖子的数量要多得多。如果使用关系数据库存储点击,可能会有很多行级锁争用。因此,最好使用redis的INCR命令来增加点击量。
当redis服务器启动时,可以从关系数据库中读取点击次数的初始值(1237本页面已被访问34634次)
一个
2
r.set(访问次数:1237:总计,34634)
真实的
每当页面被点击时,使用INCR来增加点击次数。
一个
2
三
四
r.incr(访问次数:1237:总数)
34635
r.incr(访问次数:1237:总数)
34636
这个值可以在页面加载时直接获得。
一个
2
r.get(访问次数:1237:总数)
34636
5.使用哈希类型保存多样化的对象
当有大量内容不同的文档时(即表格没有固定的列),可以用hash表示。
一个
2
三
四
五
六
七
八
九
10
11
12
r.hset(users:jdoe , name , John Doe )
1L
r.hset(用户:jdoe
1L
r.hset(用户:jdoe ,电话, 1555313940 )
1L
r.hincrby(用户:jdoe ,访问,1)
1L
r.hgetall(用户:jdoe )
{ 电话: 1555313940 ,姓名:无名氏,拜访
r.hkeys(用户:jdoe )
[姓名,电子邮件,电话,访问]
6.应用场景——社交圈数据
在社交网站中,每个圈子都有自己的用户群。具有共同特征的人(如某项体育活动、游戏、电影等的爱好者。)可以通过圆圈找到。当用户加入一个或几个圈子时,系统可以向用户推荐圈子里的人。
我们定义这两个圈子,加入一些圈子成员。
一个
2
三
四
五
六
七
八
九
10
11
12
r.sadd(圈子:游戏:lol ,用户:debugo )
一个
r.sadd(圈子:游戏:lol ,用户:leo )
一个
r.sadd(圈子:游戏:lol ,用户:郭)
一
r.sadd(圈子:足球:InterMilan ,用户:郭)
一
r。sadd(圈子:足球:国际米兰,用户:李维斯)
一
r。sadd(圈子:足球:国际米兰,用户:利奥)
一
#获得某一圈子的成员
一
2
3
r.smembers(圈子:游戏:lol’)
设置([用户:郭,用户:debugo ,用户:狮子座])
redimembers circle:jdoe:family
可以使用集合运算来得到几个圈子的共同成员:
一
2
3
四
r.sinter(圈子:游戏:lol ,圈子:足球:inter Milan’)
设置([用户:郭,用户:利奥])
r . sunion(’圈子:游戏:lol ,圈子:足球:inter Milan’)
设置([用户:李维斯用户:郭,用户:debugo ,用户:狮子座])
7.应用场景 实时用户统计
用使用心得统计在线用户介绍了这个方法。当我们需要在页面上显示当前的在线用户时,就可以使用使用心得来完成了。首先获得当前时间(以Unix操作系统时间戳方式)除以60,可以基于这个值创建一个钥匙。然后添加用户到这个集合中。当超过你设定的最大的超时时间,则将这个集合设为过期;而当需要查询当前在线用户的时候,则将最后普通分钟的集合交集在一起即可。由于存储连接对象是线程安全的,所以可以直接使用一个全局变量来表示。
一
2
3
四
5
6
七
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
进口时间
fromredisimportRedis
fromdatetimeimportdatetime
在线_最后_分钟=5
redis=Redis()
defmark_online(用户标识):#将一个用户标记为在线的
now=int(time.time())#当前的一种多用户的计算机操作系统时间戳
expires=now(app。config[ ONLINE _ LAST _ MINUTES ]* 60)10 #过期的一种多用户的计算机操作系统时间戳
all _ users _ key= online-users/% d %(现在//60)#集合名,包含分钟信息
user_key=用户活动/% s %用户标识
p=redis.pipeline()
p .萨德(所有用户密钥,用户标识)#将用户编号插入到包含分钟信息的集合中
p.set(用户密钥,现在)#记录用户的标记时间
p。exp reat(所有用户密钥,过期)#设定集合的过期时间为一种多用户的计算机操作系统的时间戳
p。exp reat(用户密钥,过期)
执行()
def get _ user _ last _ activity(用户标识):#获得用户的最后活跃时间
last _ active=redis。get( user-activity/% s % user _ id )#如果获取不到,则返回没有人
iflast_activeisNone:
returnNone
返回日期时间。utcfromtimestamp(int(last _ active))
defget_online_users():#获得当前在线的用户的列表
当前=int(time.time())//60
分钟=x范围(app。配置[在线_最后_分钟])
returnredis。sunion([ online-users/% d %(current-x)#取在线_最后_分钟分钟对应集合的交集
forxinminutes
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。