将数据存入redis中
import redis
try:
rconn=redis.StrictRedis(host=
'127.0.0.1',\
port=
6379,db =
0)
# message added (hash)
rconn.hset(
'message:1000',
'uid',
'100')
rconn.hset(
'message:1000',
'message',
'hello, I am a good man!')
rconn.hmset(
'message:1001', {
'uid':
'104',
'message':
'welcome to handong province!'})
# user added (string)
rconn.
set(
'user:100',
'GaoYuliang')
rconn.
set(
'user:101',
'GaoXiaoqin')
rconn.
set(
'user:102',
'QiTongwei')
rconn.
set(
'user:103',
'LiDakang')
rconn.
set(
'uesr:104',
'HouLiangping')
# friends added (set)
rconn.sadd(
'friends:100',
"101")
rconn.sadd(
'friends:100',
"102")
rconn.sadd(
'friends:100',
"103")
rconn.sadd(
'friends:100',
"100")
rconn.sadd(
'friends:101',
'100')
rconn.sadd(
'friends:101',
'102')
rconn.sadd(
'friends:101',
'101')
rconn.sadd(
'friends:102',
'100')
rconn.sadd(
'friends:102',
'101')
rconn.sadd(
'friends:102',
'104')
rconn.sadd(
'friends:102',
'102')
rconn.sadd(
'friends:103',
'100')
rconn.sadd(
'friends:103',
'104')
rconn.sadd(
'friends:103',
'103')
rconn.sadd(
'friends:104',
'102')
rconn.sadd(
'friends:104',
'103')
rconn.sadd(
'friends:104',
'104')
# like added (set)
rconn.sadd(
'like:1000',
"101")
rconn.sadd(
'like:1000',
"102")
rconn.sadd(
'like:1000',
"103")
rconn.sadd(
'like:1001',
"103")
except Exception, e:
print e
业务逻辑实现
import redis
try:
rconn=redis.StrictRedis(host=
'127.0.0.1',\
port=
6379,db =
0)
openlist = []
loginuser =
103
for personid
in range(
100,
105):
keyname =
"friends:" + str(personid)
if rconn.sismember(keyname, loginuser):
openlist.append(personid)
for messid
in range(
1000,
1002):
keyname =
"message:" + str(messid)
uid = rconn.hget(keyname,
"uid")
if int(uid)
in openlist:
msbody = rconn.hget(keyname,
"message")
like_keyname =
"like:" + str(messid)
print rconn.get(
"user:" + uid) +
": " + msbody
for person
in rconn.smembers(like_keyname):
if int(person)
in openlist:
print rconn.get(
"user:" + person) +
" like this"
except Exception, e:
print e
一点体会
redis将数据以键值对的方式存储。与mysql相比,将不同表之间的关系同样离散为特定的键值对。 redis可以通过将id等信息整合进键名中进行唯一标识。 使用mysql时,我们用到了多表连接查询,在redis中是如何实现的呢? 答案是redis的键名中包含着id信息,利用循环可以实现对一定范围内的键名遍历。而在关系型数据库中,各种id正是进行表连接的桥梁。 同时有效利用redis的set、hash等数据结构,能简化这一过程。