Redis—非关系型数据库概述

Posted 之墨_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis—非关系型数据库概述相关的知识,希望对你有一定的参考价值。

NoSQL 数据库简介

技术发展

技术的分类

1、解决功能性的问题: Java、Jsp、RDBMS、Tomcat、html、Linux、JDBC、SVN
2、解决扩展性的问题: Struts、Spring、SpringMVC、Hibernate、Mybatis
3、解决性能的问题: NoSQL、Java 线程、Hadoop、nginx、MQ、ElasticSearch

NoSQL 数据库

NoSQL 数据库概述

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是 SQL”,泛指非关系型的数据库。
NoSQL 不依赖业务逻辑方式存储,而以简单的 key-value 模式存储。
因此大大的增加了数据库的扩展能力
不遵循 SQL 标准
不支持 ACID
远超于 SQL 的性能

NoSQL 适用场景

对数据高并发的读写
海量数据的读写
对数据高可扩展性的

NoSQL 不适用场景

需要事务支持
基于 sql 的结构化查询存储,处理复杂的关系,需要即席查询。
(用不着 sql 的和用了 sql 也不行的情况,请考虑用 NoSql)

Memcache

很早出现的 NoSql 数据库
数据都在内存中,一般不持久化
支持简单的 key-value 模式,支持类型单一
一般是作为缓存数据库辅助持久化的数据库

Redis

几乎覆盖了 Memcached 的绝大部分功能
数据都在内存中,支持持久化,主要用作备份恢复
除了支持简单的 key-value 模式,还支持多种数据结构的存储,比如 list、set、hash、zset 等。
一般是作为缓存数据库辅助持久化的数据库

MongoDB

高性能、开源、模式自由(schema free)的文档型数据库数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘
虽然是 key-value 模 式 , 但 是 对 value ( 尤 其 是 json)提供了丰富的查询功能支持二进制数据及大型对象
可以根据数据的特点替代 RDBMS ,成为独立的数据库。或者配合 RDBMS,存储特定的数据

Redis 概述安装

Redis 是一个开源的 key-value 存储系统。
和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)
这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,
而且这些操作都是原子性的。
在此基础上,Redis 支持各种不同方式的排序。
与 memcached 一样,为了保证效率,数据都是缓存在内存中。
区别的是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
并且在此基础上实现了 master-slave(主从)同步

常用五大数据类型

redis 常见数据类型操作命令

Redis 键(key)

keys *查看当前库所有 key (匹配:keys *1)
exists key 判断某个 key 是否存在
type key 查看你的 key 是什么类型
del key 删除指定的 key 数据
unlink key 根据 value 选择非阻塞删除,仅将 keys 从 keyspace 元数据中删除,真正的删除会在后续异步操作。
expire key 10 10 秒钟:为给定的 key 设置过期时间
ttl key 查看还有多少秒过期,-1 表示永不过期,-2 表示已过期
select 命令切换数据库
dbsize 查看当前数据库的 key 的数量
flushdb 清空当前库
flushall 通杀全部库

Redis 字符串(String)

简介

String 是 Redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key
对应一个 value。
String 类型是二进制安全的。意味着 Redis 的 string 可以包含任何数据。比如 jpg 图片
或者序列化的对象。
String 类型是 Redis 最基本的数据类型,一个 Redis 中字符串 value 最多可以是 512M

常用命令

set <key><value>添加键值对
*NX:当数据库中 key 不存在时,可以将 key-value 添加数据库
*XX:当数据库中 key 存在时,可以将 key-value 添加数据库,与 NX 参数互斥
*EX:key 的超时秒数
*PX:key 的超时毫秒数,与 EX 互斥
get <key>查询对应键值
append <key><value>将给定的<value> 追加到原值的末尾
strlen <key>获得值的长度
setnx <key><value>只有在 key 不存在时 设置 key 的值incr <key>
key 中储存的数字值增 1
只能对数字值操作,如果为空,新增值为 1decr <key>
key 中储存的数字值减 1
只能对数字值操作,如果为空,新增值为-1
incrby / decrby <key><步长>key 中储存的数字值增减。自定义步长。

以上是关于Redis—非关系型数据库概述的主要内容,如果未能解决你的问题,请参考以下文章

非关系型数据库Redis简介常用命令与优化

关系型数据库与非关系型数据库概述,Redis简介常用命令及优化

关系和非关数据库概述,Redis初步了解—简易命令的熟悉

Redis-非关系型数据库(持续更新中~~~)

非关系数据库:Redis

NoSQL之Redis配置与优化