缓存方案之Redis
来源:互联网 发布:python pillow 安装 编辑:程序博客网 时间:2024/05/29 17:57
缓存方案之Redis
Redis简介
Redis是Remote Dictionary Server(Redis) 的缩写,或许光听名字你就能猜出它大概是做什么的。不错,它是一个由Salvatore Sanfilippo编写的key-value存储系统,是一个使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型的Key-Value数据库,并提供多种语言的API。在很多地方,Redis也被业内人士称为数据结构服务器,因为它允许缓存的值(value)可以是字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(sorted set)等类型。此外,Redis还支持master-slave方式的数据备份,所有的这一切都让Redis在同类型的产品中脱颖而出。
Redis的优势
- 性能极高 – 在我的Mac Book Pro上执行Redis的基准测试(benchmark),每秒能够处理写操作数都在80000以上。部分测试结果如下图所示:
- 丰富的数据类型 – Redis支持Strings, Lists, Hashes, Sets 及Ordered Sets数据类型操作。
- 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
- 丰富的特性 – Redis还支持publish/subscribe,通知,key过期等丰富的特性。
Redis的安装和配置
如何在Windows和Linux系统上安装Redis在W3CSchool网站已经有详细的讲解了,我分享一下在Mac上安装Redis的过程,跟其他系统基本一致。首先从Redis的官方网站下载Redis的压缩文件,解压之后有一个src目录。由于Mac系统是在Unix系统(FreeBSD)基础上发展起来的,因此可以直接使用make命令对src目录下的源代码进行构建(Makefile肯定是已经有的,不懂make的作用和原理没关系,照做就可以了),构建完成后src目录下会生成一个redis-server文件,运行它就可以启动服务器,如下图所示。
接下来可以启动一个客户端程序来做一些简单的实验。还是在刚才的src目录下有一个redis-cli文件,运行它就可以启动一个客户端,如下图所示。
关于Redis的数据类型、命令、事务、发布/订阅、数据备份与恢复、配置等内容仍然可以参考上面提到的W3CSchool的网站。
在Java项目中使用Redis
Jedis是Redis官方首选的Java客户端开发包,点击链接可以获得相关的API文档。下面给出一段简单的测试代码。
<code class="language-Java hljs actionscript has-numbering"><span class="hljs-preprocessor"><span class="hljs-keyword">import</span> redis.clients.jedis.Jedis;</span><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">RedisTest</span> {</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> main(String[] args) { Jedis jedis = <span class="hljs-keyword">new</span> Jedis(<span class="hljs-string">"localhost"</span>); <span class="hljs-comment">// 连接到Redis服务器</span> <span class="hljs-comment">// jedis.auth("123456"); // 输入口令进行验证</span> jedis.<span class="hljs-keyword">set</span>(<span class="hljs-string">"greeting"</span>, <span class="hljs-string">"Hello, world!"</span>); <span class="hljs-comment">// 将字符串缓存到Redis服务器</span> System.out.println(jedis.<span class="hljs-keyword">get</span>(<span class="hljs-string">"greeting"</span>)); <span class="hljs-comment">// 从Redis缓存中获取数据</span> }}</code><ul style="FILTER: ; ZOOM: 1" class="pre-numbering"><li>1</li></ul>
Redis和Memcached的比较
- Redis使用最佳方式是全部数据in-memory。
- Redis更多场景是作为Memcached的替代者来使用。
- 当需要除key/value之外的更多数据类型支持时,Redis更合适。
- 当存储的数据不能被剔除时,使用Redis更合适。
- Redis可以使用指令直接对缓存的数据进行运算。
- 缓存方案之Redis
- 缓存方案之Redis
- 缓存之redis
- 缓存之Redis--Jedis
- Redis之缓存机制
- 缓存系统之Redis
- Redis之缓存设计
- redis整合spring mybatis --缓存方案
- redis整合spring mybatis --缓存方案
- redis整合spring mybatis --缓存方案
- redis整合spring mybatis --缓存方案
- redis整合spring mybatis -- 缓存方案
- 分布式缓存redis方案与memcached方案的选择
- Redis之高可用方案
- Redis 实践之集群方案
- Redis实践之HA方案
- Redis HA方案之sentinel
- Redis缓存应用之Java
- Java动态绑定机制的内幕
- Yii Framework的获取与项目的新建
- VS2008调试Release程序--Dump文件方式
- 带有分割线的GridView九宫格的完美实现
- Vuforia SDK---- AR开发vuforiaARCamera动态修改最大识别量
- 缓存方案之Redis
- 懒加载
- Java 虚拟机体系结构
- 如何判断TCP包是否发送成功
- java基础回顾与进阶
- JavaScript读取本地json文件
- 面向对象思想
- 大学最重要的七项学习
- 坑爹的stl list 的size()成员函数