redis,mongodb小记

redis可以将海量数据存放在一个字典中,但是键和值均以字符串为主,所以在键或者值有其他数据结构的时候,需要用json转化为字符串格式。

mongodb可以将海量小字典存储在数据库中,所以在它要求每个文档都是一个独立的字典,而且有大小限制(记忆中是16m的限制)

由于这个特点,redis取值是精确到某个键值对下的具体的值,而mongodb是将满足条件的字典整体取出

1插入,读取数据

redis一个数据库就可以理解为一个特别大的字典(big_dict),里面有小字典(small_dict),这小字典相当于是mysql中的一张表,键即表名,小字典(为了区别开叫‘’表字典‘’)表字典同样也是字典,

r.set('name1','Moyan-lll')#r.就相当于为redis这个big_dict创建了一个small_dict字典,表字典的键为name1,值为:'Moyan-lll'

r.hset('dict_name','name1','Moyan-lll')#其中的“r.”同样相当于整个redis的big_dict创建了一个small_dict,该small_dict的键为‘dict_name’,值为:{‘name1’:'Moyan-lll'}

r.hset('dict_name',key1,value1)

一下是错误的批量插入数据:

r.hmset('dict_name',[{'name1':'Moyan-lll'},{'name2':'Moyan-ll'}])

正确的应为:r.hmset("dict_name",{'name1':'Moyan-lll','name2':'Moyan-ll'})

因为redis都是和键值对打交道,所以可以理解为,多个插入数据,就是需要多个键值对的字典!因为每层关系都是字典的关系,如果用列表容易产生重复的数据,而字典在构建的时候天然自动去重(都是我个人为了方便记忆的而如此理解的,有误请指正)

1.1读取数据:

r.hget('dict_name',key_name)  #第一步可以理解为定位到某个表(字典表),第二步是在是在确定某个键值对。

r.get('name') #第一步找到表(字符串表)直接拿结果,如果没有相应的数据返回None

 

mongodb

mongodb存储数据不再是以字符串为主,它可以直接将能够hash的数据存储下来,

读取数据:collection.find({'name':'Moyan-lll'}),这的collection就是相当于一张表,里面存储的就是字典,这里拿的是一个整个字典的数据,返回值一个对象,如果没有相应数据也会返回一个可迭代对象。最好用列表生产式表示判断是否为空列表。

1.2批量读取:

collection.find({'name':{'$in':[ 'Moyan-lll' ,'Moyan-ll' ]}})

返回的是一个列表,如果有关键字没有查询到不会返回一个None值,而是在用列表生成式接收之后直接就没有值,返回的是一个无None列表。

2删除数据:

2.1:redis删除:

dict_names = r.keys()

r.delete(*dict_names)  #这就完成了批量删除数据库中所有的数据了,如果只打算删除某个dict:r.delete(adict_name);如果想要删除某个字典的某个具体的键值对如果想当然地:r.delete(adict_name,a_key)就错了,因为这样还是会删除整个字典。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值