1、redis简介

Redis是一个速度非常快的key-value非关系型存储数据库,可以存储5种形态的键值对,可以将存储在内存中的键值对持久化到硬盘,可以使用复制特性扩展读性能,还可以使用客户端分片扩展写性能。

1.1 redis与其他数据库和软件的对比

名称

类型

数据存储选项

查询类型

附加功能

Redis

使用内存存储的非关系型数据库

字符串、列表、集合、散列表、有序集合

每种数据类型都有自己的专属命令,另外还有批量操作和不完全事务支持

发布与订阅、主从复制、持久化、脚本

Memcached

使用内存存储的键值缓存

键值之间的映射

创建命令、读取命令、更新命令、删除命令以及其他几个命令

为提升性能而设的多线程服务器

MySQL

关系型数据库

每个数据库可以包含多个表,每个表可以包含多个行;可以处理多个表的视图;支持空间和第三方扩展

SELECT、UPDATE、INSERT、DELETE、函数、存储过程

支持ACID性质,主从复制和主主复制

PostgreSQL

关系型数据库

每个数据库可以包含多个表,每个表可以包含多个行;可以处理多个表的视图;支持空间和第三方扩展;支持可定制类型

SELECT、UPDATE、INSERT、DELETE、函数、自定义的存储过程

支持ACID性质,主从复制,由第三方支持的多主复制

MongoDB

使用硬盘存储的非关系型文档存储

每个数据库可以包含多个表,每个表可以包含多个无schema的BSON文档

创建命令、读取命令、更新命令、删除命令、条件查询命令等

支持map-reduce操作,主从复制,分片,空间索引

1.2 使用redis的理由

(1)与关系型数据库相比,发送Redis命令的请求不需要经过典型的查询解析器和查询优化器进行处理,相对MySQL等关系型数据库少了两步操作处理,所以Redis存储的数据执行随机写的速度总是非常迅速的;

(2)与Memcached相比,首先,Redis可以将彼此相关的聚合数据放在同一个结构里,使得访问数据变得特别容易;其次,Redis数据类型多样,使用起来比较灵活,而Memcached只能存储整数型的聚合数据。

2、Redis数据结构简介

数据类型

结构存储的值

结构的读写能力

string

可以是字符串、整数或者浮点型

对整个字符串或者字符串中的一部分执行操作;对整数和浮点数执行自增或者自减操作

list

一个链表,链表上的每个节点都包含了一个字符串

从链表的两端推入或者弹出元素,根据偏移量对链表进行修剪;读取单个或者多个元素;根据值查找或者移除元素

set

包含字符串的无序收集器,并且被包含的每个字符串都是独一无二,各不相同的

添加、获取、移除单个元素;检查一个元素是否存在于集合中;计算交集、并集、差集;从集合中随机获取元素

hash

包含键值对的无序散列表

添加、获取、移除单个键值对;获取所有键值对

zset

字符串成员与浮点数分值之间的有序映射,元素的排列顺序由分值的大小决定

添加、获取、移除单个键值对;根据分值范围或者成员来获取元素

最新文章

  1. Azure Service Febric 笔记:Web API应用
  2. Python之路----------random模块
  3. 编译系统中的 NFA/DFA算法理解
  4. PHP 开放JSON格式接口实例
  5. Python中T-SNE实现降维
  6. MSSQLSERVER数据库- LEFT JOIN后面跟着WHERE竟变成内联 解决方法
  7. html hack 列表
  8. Struts2 在Action中获取request、session、servletContext的三种方法
  9. WinForm 控件的布局(Dock属性)的注意点
  10. oop编程思想简单理解
  11. 实验9-1 编写一个存储过程proc_test_func
  12. Oracle 12c 创建新的数据库实例、用户
  13. (五)STL算法
  14. Java语言的简介
  15. javascript void函数
  16. spark rdd 宽窄依赖理解
  17. 【Java】Java-XML解析利器-SAX-高性能-易用
  18. php命令行脚本 mock数据
  19. Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.
  20. [CodeVs3196]黄金宝藏(DP/极大极小搜索)

热门文章

  1. socket编程中客户端常用函数
  2. JVM配置参数详解(目前不够完善)
  3. hibernate多表查询封装实体
  4. BigDecimal.setScale 处理java小数点
  5. Java公开课-04.异常
  6. swap分析及其使用
  7. 安装VirtualBox中的增强功能包VBoxLinuxAdditions
  8. pymongo连接MongoDB
  9. poj~1236 Network of Schools 强连通入门题
  10. springboot中使用自定义两级缓存