Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介( 二 )


3、虚拟内存–Redis当物理内存用完时 , 可以将一些很久没用到的Value交换到磁盘;
4、过期策略–Memcached在set时就指定 , 例如:setkey1008,即永不过期 。 Redis可以通过例如expire设定 , 例如:expirename10;
5、分布式–设定Memcached集群 , 利用magent做一主多从;Redis可以做一主多从 。 都可以一主一从;
6、存储数据安全–Memcached挂掉后 , 数据没了;Redis可以定期保存到磁盘(持久化);
7、灾难恢复–Memcached挂掉后 , 数据不可恢复;Redis数据丢失后可以通过AOF恢复;
8、Redis支持数据的备份 , 即Master-Slave模式的数据备份;
9、应用场景不一样:Redis出来作为NoSQL数据库使用外 , 还能用做消息队列、数据堆栈和数据缓存等;Memcached适合于缓存SQL语句、数据集、用户临时性数据、延迟查询数据和Session等 。
五、Redis和其他数据库的区别
Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介
文章图片
Redis常见的5种不同的数据类型详解
前言
Redis除了可以存储键还可以存储常见的5种数据类型 , 分别是:String、List、Set、Hash、ZSet 。 对于Redis的命令有一部分是可以公用的 , 但是还有一些其他的命令是属于特殊使用的 。
首先看看一张关于Redis5种数据结构的对比:
Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介
文章图片
下边就分别介绍5种国不同的数据结构类型 。
一、String字符串类型
Redis中的String类型就是一个由字节组成的序列 , 它和其他编程语言或者其他键值对存储提供的字符串操作非常相似 。
一个String类型的实例 , 其中键为hello , 值为world:
Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介
文章图片
(1)常用命令如下:
Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介
文章图片
(2)Redis中的自增命令和自减命令:
Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介
文章图片
(3)除了get、set、del、自增、自减等操作外 , Redis还提供了下面一些操作:
1、获取字符串长度2、往字符串append内容3、设置和获取字符串的某一段内容4、设置及获取字符串的某一位(bit)5、批量设置一系列字符串的内容
如下图所示:
Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介
文章图片
(4)应用场景:
String是最常用的一种数据类型 , 普通的key/value存储都可以归为此类 , value其实不仅是String , 也可以是数字:比如想知道什么时候封锁一个IP地址(访问超过几次) 。 INCRBY命令让这些变得很容易 , 通过原子递增保持计数 。
二、List列表类型
Redis中的List其实就是链表(redis使用双端链表实现的List) , 相信学过数据结构知识的人都应该能理解其结构 。
使用List结构 , 我们可以轻松地实现最新消息排行等功能(比如新浪微博的TimeLine) 。 List的另一个应用就是消息队列 , 可以利用List的PUSH操作 , 将任务存在List中 , 然后工作线程再用POP操作将任务取出进行执行 。
一个List类型的实例 , 列表包含的元素 , 相同元素可以重复出现:
Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介
文章图片
需要注意的是:一个List结构可以有序的存储多个字符串 , 并且是允许元素重复的 。
(1)常用命令如下:
Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介