Redis—非关系型数据库概述

9 篇文章 1 订阅
5 篇文章 0 订阅

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 中储存的数字值增减。自定义步长。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

之墨_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值