对redis,mongodb的一些认识

Redis是以key-value形式存在,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本的要求(是非关系型的,分布式的,开源的水平可拓展的)

优点:

对数据高并发读写,它是直接缓存在内存里的,所以它是一个内存类型的数据库.

对海量数据的高效率存储和访问

对数据的可拓展性和高可用性

单线程操作(说明他是天生的,比较安全的),每个操作都是原子操作,没有并发相关的问题(但是在redis 6 以后就不是单线程的操作,是多线程了)

缺点:

不支持事务

没有办法太复杂的关系型的数据

redis定位是缓存,提高数据读写速度,减轻对数据库的

应用场景:排行榜.可以以做到实时排行。

redis和memcache的区别,及其优缺点

1、 Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。
2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
3、虚拟内存–Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘
4、过期策略–memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10
5、分布式–设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从
6、存储数据安全–memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化)
7、灾难恢复–memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复
8、Redis支持数据的备份,即master-slave模式的数据备份。

redis和memecache的不同在于[2]:
1、存储方式:
memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小
redis有部份存在硬盘上,这样能保证数据的持久性,支持数据的持久化(笔者注:有快照和AOF日志两种持久化方式,在实际应用的时候,要特别注意配置文件快照参数,要不就很有可能服务器频繁满载做dump)。
2、数据支持类型:
redis在数据支持上要比memecache多的多。
3、使用底层模型不同:
新版本的redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
4、运行环境不同:
redis目前官方只支持LINUX 上去行,从而省去了对于其它系统的支持,这样的话可以更好的把精力用于本系统 环境上的优化,虽然后来微软有一个小组为其写了补丁。但是没有放到主干上

redis基本操作命令

1、string–体会一下 string应用场景

set key value -> 存入键值对

set name lili

get key -> 根据键取出值

get name

incr key -> 把值递增1

incr age

注意:变量一定要是数值才可以,否则就会报错.

decr key -> 把值递减1

decr age

incrby key num -> 偏移值

incrby age 2
其实就是在age上加多少的意思.

del key -> 根据键删除键值对

del age

setex key timeout value -> 存入键值对,timeout表示失效时间,单位s

setex age 5 12
就是age=12在5秒后就会失效

ttl ->可以查询出当前的key还剩余多长时间过期

ttl name 

2、hash–体会一下 hash应用场景

hset key hashkey hashvalue -> 存入一个hash对象

hset user hobby java

hget key hashkey -> 根据hash对象键取去值

hget user hobby

hexists key hashkey -> 判断hash对象是含有某个键

hexists user hobby

hdel key hashkey -> 根据hashkey删除hash对象键值对

hdel user hobby

3、list–体会一下 list应用场景

rpush key value -> 往列表右边添加数据

rpush arr 1

lpush key value -> 往列表左边添加数据

lpush arr 2

lpop key -> 弹出列表最左边的数据

lpop arr

rpop key -> 弹出列表最右边的数据

rpop arr

lrange key start end -> 范围显示列表数据,全显示则设置0 -1

lrange arr 0 -1

llen key -> 获取列表长度

llen arr

4、set–体会一下set应用场景

sadd key value -> 往set集合中添加元素

sadd set1 lili huahua

smembers key -> 列出set集合中的元素

smembers set1

srem key value -> 删除set集合中的元素

srem set1 lili

spop key count -> 随机弹出集合中的元素

spop set1 1

sdiff key1 key2 -> 返回key1中特有元素(差集:sdiff set1 set2返回set1set2不包含的元素)

sdiff set1 set2

sinter key1 key2 -> 返回两个set集合的交集(交集:sinter set1 set2是能特然 返回2个元素都拥有的元素)

sinter set1 set2

sunion key1 key2 -> 返回两个set集合的并集(并集:sunion set set2返回2个集合所有元素,排除重复)

sunion set1 set2

srandmember key count -> 随机获取set集合中元素

srandmember set1  3

5、zset–体会一下zset应用场景

zadd key num name -> 存入分数和名称

zadd str 23 sc

zrange key start end -> 按照分数升序输出名称

zrange str 1,3

zrevrange key start end -> 按照分数降序输出名称

zrevrange str 1,3

zincrby key num name -> 偏移名称对应的分数

zincrby str 3 sc

zrank key name -> 升序返回排名

zrank str sc

zrevrank key name -> 降序返回排名

zrevrank str sc

zcard key -> 返回元素个数

zcard str

redis持久化机制

1、RDB方式 :

【全量】RDB 持久化,是指在指定的时间间隔内将内存中的数据集快照写入磁盘。实际操作过程是,fork 一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。

2、AOF方式

【增量】AOF持久化,以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

Monogodb和redis的区别:

  • 内存管理

Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。

MongoDB 数据会优先存于内存,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。

需要注意的是Redis 和mongoDB特别消耗内存,一般不建议将它们和别的服务部署在同一台服务器上。

  • 数据结构

Redis 支持的数据结构丰富,包括hash、set、list等。

MongoDB 数据结构比较单一,但是支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。

  • 数据量和性能

当物理内存够用的时候,性能,redis>mongodb>mysql

数据量,mysql>mongodb>redis

注意mongodb可以存储文件,适合存放大量的小文件,内置了GirdFS 的分布式文件系统。

  • 可靠性

mongodb从1.8版本后,采用binlog方式(MySQL同样采用该方式)支持持久化,增加可靠性;

Redis依赖快照进行持久化;AOF增强可靠性;增强可靠性的同时,影响访问性能。

可靠性上MongoDB优于Redis。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值