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文档。下面给出一段简单的测试代码。

import redis.clients.jedis.Jedis;

class RedisTest {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost"); // 连接到Redis服务器
// jedis.auth("123456"); // 输入口令进行验证
jedis.set("greeting", "Hello, world!"); // 将字符串缓存到Redis服务器
System.out.println(jedis.get("greeting")); // 从Redis缓存中获取数据
}
}

Redis和Memcached的比较

  1. Redis使用最佳方式是全部数据in-memory。
  2. Redis更多场景是作为Memcached的替代者来使用。
  3. 当需要除key/value之外的更多数据类型支持时,Redis更合适。
  4. 当存储的数据不能被剔除时,使用Redis更合适。
  5. Redis可以使用指令直接对缓存的数据进行运算。

 

缓存方案之Redis的更多相关文章

  1. java web开发缓存方案,ehcache和redis哪个更好

    Ehcache在java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS中取出来的高花费.高延迟采取的一种缓存方案.正因为Ehcache具有健壮性(基于java开发).被认证(具有apac ...

  2. 【无私分享:ASP.NET CORE 项目实战(第十一章)】Asp.net Core 缓存 MemoryCache 和 Redis

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 经过 N 久反复的尝试,翻阅了网上无数的资料,GitHub上下载了十几个源码参考, Memory 和 Redis 终于写出一个 ...

  3. Asp.net Core 缓存 MemoryCache 和 Redis

    Asp.net Core 缓存 MemoryCache 和 Redis 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 经过 N 久反复的尝试,翻阅了网上无数的资料,GitH ...

  4. DRF 缓存解决方案 drf-extensions / redis

    drf-extensions 概述 drf-extensions组件内部提供了 DRF  的本地内存方式的缓存方式 本地内存方式缓存在项目重启后则会消失 官方点击 这里 安装 pip3 install ...

  5. Redis缓存穿透、缓存雪崩、redis并发问题分析

    把redis作为缓存使用已经是司空见惯,但是使用redis后也可能会碰到一系列的问题,尤其是数据量很大的时候,经典的几个问题如下: (一)缓存和数据库间数据一致性问题分布式环境下(单机就不用说了)非常 ...

  6. 网站缓存技术(Redis、Memcached、Ehcache)

    Redis 是什么? 通常而言目前的数据库分类有几种,包括 SQL/NSQL,,关系数据库,键值数据库等等等. 分类的标准也不一,Redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点 ...

  7. Redis缓存穿透、缓存雪崩、redis并发问题 并发竞争key的解决方案 (阿里)

    阿里的人问我 缓存雪崩(大量数据在同一时间过期了)了如何处理,缓存击穿了如何处理,回答的很烂,做了总结: 把redis作为缓存使用已经是司空见惯,但是使用redis后也可能会碰到一系列的问题,尤其是数 ...

  8. 缓存数据库之redis

    NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库,NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题 N ...

  9. jQuery数据缓存方案详解:$.data()的使用

    我们经常使用隐藏控件或者是js全局变量来临时存储数据,全局变量容易导致命名污染,隐藏控件导致经常读写dom浪费性能.jQuery提供了自己的数据缓存方案,能够达到和隐藏控件.全局变量相同的效果,但是j ...

随机推荐

  1. mysql tinyint smallint mediumint int bigint

    类型 存储所占空间 (无论显示多少位) (单位 字节/bytes) 存储数据范围 最大显示长度 tinyint 1 -128   ~  127                 signed 0     ...

  2. imx6 android 进入文件系统闪屏

    imx6进入文件系统的时候都会闪屏,应该是framebuffer未初始化,就已经打开了背光.目前解决办法,在kenel阶段关闭背光,显示android的开机动画之后(此时framebuffer已经初始 ...

  3. 在Fedora8上安装jdk-7u25-linux-i586.rpm的步骤

    按:我们身处一个信息爆炸的年代,当有事不决时,打开搜索引擎瞬息间就能得到海量的答案.但是,这未必会让你的问题迎刃而解,因此很多“答案”会把你引向错误的方向,浪费你的时间.希望搜索引擎能有所改进,对明确 ...

  4. dubbo的简单使用

    整个过程大致是这样的 1.注册中心使用zookeeper,地址为192.168.192.128:2181! 2.首先服务方 所在的服务器是127.0.0.1:8081 服务方提供的接口: public ...

  5. Python处理时间 time && datetime 模块

    Python处理时间 time  &&  datetime 模块 个人整理,获取时间方式: import datetime import time #获取当前时间:Thu Nov 03 ...

  6. 感知开源的力量-APICloud Studio开源技术分享会

    2014.9.15 中国领先的“云端一体”移动应用云服务提供商APICloud正式发布2015.9.15,APICloud上线一周年,迎来第一个生日这一天,APICloud 举办APICloud St ...

  7. windows下制作PHP扩展

    一.编译PHP 转自:http://demon.tw/software/compile-php-on-windows.html 编译PHP扩展必需的一些头文件需要从php源码中获取,其中有一些配置性的 ...

  8. Redis一些基本的操作

    代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...

  9. Linux 创建用户和工作组

    创建用户 useradd user1                            #创建user1用户,创建user1用户同时会创建一个同名的工作组user1 passwd user1   ...

  10. Windows Server 2008 R2 域控修改域用户密码复杂性

    1.进入”本地安全策略”进行管理时,发现密码策略已经被锁定,无法更改: 2.在此情况下要改密码策略的过程如下, 进入组策略管理: 3.右键点击/编辑Default Domain Policy: 4.在 ...