NoSQL数据库---Redis

概念

Redis是一款高性能的NoSQL系列的非关系型数据库
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s ,且Redis通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:
1) 字符串类型 string
2) 哈希类型 hash
3) 列表类型 list
4) 集合类型 set
5) 有序集合类型 sortedset
在这里插入图片描述

什么是非关系型数据库呢?

我们之前都学过的数据库包括SQLserver Mysql Oracle等等都属于关系型数据库 例如:
在公司 有人员表 和部门表 每个人员对应着一个部门 多个人员对应一个部门等 ;这两个表就有了1对1或者多对1的关系
这些数据库都有的共同特征是1.数据之间有关联关系。2.数据存储在硬盘文件上
而非关系型数据库的存储形式是键值对的形式 每一个Key对应一个value
在这里插入图片描述
非关系型数据库的特点是:1.数据之间没有关系 2.数据存储在内存中

NOSQL和关系型数据库比较的优缺点

优点:
1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。
3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。

缺点:
1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。
2)不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。
3)不提供关系型数据库对事务的处理。
总结:关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库,
让NoSQL数据库对关系型数据库的不足进行弥补。
一般会将数据存储在关系型数据库中,在nosql数据库中备份存储关系型数据库的数据

主流的NOSQL产品

		•	键值(Key-Value)存储数据库
				相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
				典型应用: 内容缓存,主要用于处理大量数据的高访问负载。 
				数据模型: 一系列键值对
				优势: 快速查询
				劣势: 存储的数据缺少结构化
		•	列存储数据库
				相关产品:Cassandra, HBase, Riak
				典型应用:分布式的文件系统
				数据模型:以列簇式存储,将同一列数据存在一起
				优势:查找速度快,可扩展性强,更容易进行分布式扩展
				劣势:功能相对局限
		•	文档型数据库
				相关产品:CouchDB、MongoDB
				典型应用:Web应用(与Key-Value类似,Value是结构化的)
				数据模型: 一系列键值对
				优势:数据结构要求不严格
				劣势: 查询性能不高,而且缺乏统一的查询语法
		•	图形(Graph)数据库
				相关数据库:Neo4J、InfoGrid、Infinite Graph
				典型应用:社交网络
				数据模型:图结构
				优势:利用图结构相关算法。
				劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

Redis应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)
聊天室的在线好友列表
任务队列。(秒杀、抢购、12306等等)
应用排行榜
网站访问统计
数据过期处理(可以精确到毫秒
分布式集群架构中的session分离

Redis常用命令

根据不同的存储类型命令也是略有不同的

  • String 字符串类型
  1. 存储: set key value

  2. 获取: get key

  3. 删除: del key
    在这里插入图片描述

  • 哈希类型 hash
  1. 存储: hset key field value
  2. 获取: hget key field value
    hgetall
  3. 删除: hdel key field
    在这里插入图片描述
  • 列表类型 list:可以添加一个元素到列表的头部(左边)或者尾部(右边)
    1. 添加:
    1. lpush key value: 将元素加入列表左表

     	2. rpush key value:将元素加入列表右边
    

    在这里插入图片描述

  1. 获取:
    * lrange key start end :范围获取

  2. 删除:
    * lpop key: 删除列表最左边的元素,并将元素返回
    * rpop key: 删除列表最右边的元素,并将元素返回
    在这里插入图片描述

  • . 集合类型 set : 不允许重复元素

    1. 存储:sadd key value

    2. 获取:smembers key:获取set集合中所有元素

    3. 删除:srem key value:删除set集合中的某个元素
      在这里插入图片描述

  • 有序集合类型 sortedset:不允许重复元素,且元素有顺序.每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

    1. 存储:zadd key score value

    2. 获取:zrange key start end [withscores]

    3. 删除:zrem key value
      在这里插入图片描述

Redis通用命令

  1. keys * : 查询所有的键
  2. type key : 获取键对应的value的类型
  3. del key:删除指定的key value
    在这里插入图片描述

Redis持久化

  1. redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中。
  2. redis持久化机制:
    1. RDB:默认方式,不需要进行配置,默认就使用这种机制
    * 在一定的间隔时间中,检测key的变化情况,然后持久化数据
    1.1 编辑redis.windwos.conf文件
    //每隔15分钟有一个key变化进行保存
    # after 900 sec (15 min) if at least 1 key changed
    save 900 1
    //每隔5分钟有10个key变化进行保存
    # after 300 sec (5 min) if at least 10 keys changed
    save 300 10
    //每隔1分钟有10000个key变化进行保存
    # after 60 sec if at least 10000 keys changed
    save 60 10000
    在这里插入图片描述
    在这里插入图片描述
    2. AOF:日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据
    2.1. 编辑redis.windwos.conf文件
    appendonly no(关闭aof) --> appendonly yes (开启aof)
    # appendfsync always : 每一次操作都进行持久化
    appendfsync everysec : 每隔一秒进行一次持久化
    # appendfsync no : 不进行持久化
    在这里插入图片描述
    设置完之后当有数据保存的时候会自动生成所对应的数据文件
    在这里插入图片描述
    在这里插入图片描述
    希望本篇文章能够帮助大家更好的了解使用Redis数据库!
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 27
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值