Redis 简要描述:

1.  Redis 是啥 ?

Redis 英文名称全称为: Remote Dictionary Server ,中译为远程字典服务器。 是一款区分于磁盘数据库如(Mysql)的采用Key-Value键值对的字典结构的缓存数据库。

2. Redis有什么作用?

Redis作为一款内存数据库,其最大的有点就是高速,对于那些高频访问的数据,进行加缓存。Redis加载缓存的时候使用的LRU机制,对于热点数据将会持续保留,其他的将会被淘汰。

Redis涉及到的LRU简要源码解析算法实现:

  1. 1 package com.mysql.jdbc.util;
  2. 2
  3. 3 import java.util.LinkedHashMap;
  4. 4 import java.util.Map.Entry;
  5. 5
  6. 6 public class LRUCache extends LinkedHashMap {
  7. 7 private static final long serialVersionUID = 1L;
  8. 8 protected int maxElements;
  9. 9
  10. 10 public LRUCache(int maxSize) {
  11. 11 super(maxSize, 0.75F, true);
  12. 12 this.maxElements = maxSize;
  13. 13 }
  14. 14
  15. 15 protected boolean removeEldestEntry(Entry eldest) {
  16. 16 return this.size() > this.maxElements;
  17. 17 }
  18. 18 }

注解:  Lru算法使用Java jdk提供的LinkedHashMap实现

  1. package com.hbut.util;
  2.  
  3. import java.util.LinkedHashMap;
  4. import java.util.Map;
  5.  
  6. /**
  7. * @Author XiJun.Gong
  8. * @DATE 2016/6/11.
  9. * aim: com.hbut.util
  10. */
  11. public class Lru extends LinkedHashMap {
  12. private static final long serialVersionUID = 1L;
  13. private int maxElements = 5; //default size is 5
  14.  
  15. public int getMaxElements() {
  16. return maxElements;
  17. }
  18.  
  19. public void setMaxElements(int maxElements) {
  20. this.maxElements = maxElements;
  21. }
  22.  
  23. /**
  24. * if size > maxElements remove this old entry and
  25. * add new entry
  26. * @param eldest
  27. * @return true or false
  28. */
  29. protected boolean removeEldestEntry(Map.Entry eldest) {
  30.  
  31. return size() > this.maxElements;
  32. }
  33. }

 Redis如何使用java是测试用例:

使用Maven配置pom.xml

  1. 1 <!--Redis cache -->
  2. 2 <dependency>
  3. 3 <groupId>redis.clients</groupId>
  4. 4 <artifactId>jedis</artifactId>
  5. 5 <version>${redis.clients.version}</version>
  6. 6 <type>jar</type>
  7. 7 <scope>compile</scope>
  8. 8 </dependency>

window环境下测试流程:

window Redis版下载环境: https://github.com/MSOpenTech/redis

Redis 有五个执行程序:

       redis-server server服务器,需要启动它
       redis-client redis命令行客户端
       redis-benchmark 性能测试工具
      redis-check-aof/rdb rdb/aof修复工具,aof ->AppendOnly File

启动 redis-server服务器,出现如下界面

java 代码测试

  1. 1 package com.hbut.util;
  2. 2
  3. 3 import com.google.common.collect.Maps;
  4. 4 import org.junit.Before;
  5. 5 import org.junit.Test;
  6. 6 import redis.clients.jedis.Jedis;
  7. 7 import redis.clients.jedis.JedisPool;
  8. 8 import redis.clients.jedis.JedisPoolConfig;
  9. 9
  10. 10 import java.io.*;
  11. 11 import java.util.Iterator;
  12. 12 import java.util.List;
  13. 13 import java.util.Map;
  14. 14
  15. 15 /**
  16. 16 * Created by XiJun.Gong on 14-2-28.
  17. 17 */
  18. 18 public class TestRedis {
  19. 19
  20. 20
  21. 21 JedisPool pool;
  22. 22 Jedis jedis;
  23. 23
  24. 24 /**
  25. 25 * connection
  26. 26 */
  27. 27 @Before
  28. 28 public void init() {
  29. 29 pool = new JedisPool(new JedisPoolConfig(), "localhost");
  30. 30 jedis = pool.getResource();
  31. 31 //jedis.auth("*******"); //密码验证
  32. 32 }
  33. 33
  34. 34
  35. 35 /**
  36. 36 * 存储字符串,设置失效时间
  37. 37 */
  38. 38 @Test
  39. 39 public void RedisTest() throws InterruptedException {
  40. 40 jedis.set("google", "entry1");
  41. 41 System.out.println(jedis.get("google"));
  42. 42 jedis.expire("google", 3); //设置过期时间
  43. 43 Thread.sleep(5000);
  44. 44 System.out.println(jedis.get("google"));
  45. 45 }
  46. 46
  47. 47
  48. 48 /**
  49. 49 * CRUD for String
  50. 50 */
  51. 51 @Test
  52. 52 public void redisCRUD() {
  53. 53 /**add**/
  54. 54 jedis.set("key", "google");
  55. 55 System.out.println(jedis.get("key"));
  56. 56 /**delete**/
  57. 57 jedis.del("key");
  58. 58 System.out.println(jedis.get("key"));
  59. 59 /*modify*/
  60. 60 jedis.append("key", "Qunar.com");
  61. 61 System.out.println(jedis.get("key"));
  62. 62 /**another method**/
  63. 63 jedis.set("key", "Tencent");
  64. 64 System.out.println(jedis.get("key"));
  65. 65
  66. 66 /**Multi value mapping key**/
  67. 67 jedis.mset("key", "google", "tencent", "Qunar");
  68. 68 System.out.println(jedis.mget("key", "google"));
  69. 69
  70. 70 /*for map*/
  71. 71 Map<String, String> user = Maps.newHashMap();
  72. 72 user.put("huifeidmeng", "Qunar");
  73. 73 jedis.hmset("user", user);
  74. 74 List<String> rsmap = jedis.hmget("user", "key");
  75. 75 System.out.println(rsmap);
  76. 76
  77. 77 }
  78. 78
  79. 79 }

Redis入门学习笔记一的更多相关文章

  1. Redis——入门学习笔记

    Redis学习 说到前面:这篇笔记只是我作为一个Redis新手,从0到认知的一个过程.后续会持续深入学习. 学习初衷和计划 学习Redis,因为这是热门技术,必须掌握的技术,别人都会我不会.就这一点就 ...

  2. 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)

    [原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...

  3. Redis:学习笔记-01

    Redis:学习笔记-01 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 1. Redis入门 2.1 ...

  4. Hadoop入门学习笔记---part4

    紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...

  5. Hadoop入门学习笔记---part3

    2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...

  6. PyQt4入门学习笔记(三)

    # PyQt4入门学习笔记(三) PyQt4内的布局 布局方式是我们控制我们的GUI页面内各个控件的排放位置的.我们可以通过两种基本方式来控制: 1.绝对位置 2.layout类 绝对位置 这种方式要 ...

  7. PyQt4入门学习笔记(一)

    PyQt4入门学习笔记(一) 一直没有找到什么好的pyqt4的教程,偶然在google上搜到一篇不错的入门文档,翻译过来,留以后再复习. 原始链接如下: http://zetcode.com/gui/ ...

  8. Hadoop入门学习笔记---part2

    在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建ha ...

  9. Hadoop入门学习笔记---part1

    随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力, ...

随机推荐

  1. kafka常用命令

    以下是kafka常用命令行总结: 0.查看有哪些主题: ./kafka-topics.sh --list --zookeeper 192.168.0.201:12181 1.查看topic的详细信息 ...

  2. windows+caffe(七)——ComputeImageMean.bat

    1.首先我们使用lmdb数据格式(怎样得到lmdb数据格式,看我的另一篇)求得均值: 新建ComputeImageMean.bat,里面输入: D:/deeptools/caffe-windows-m ...

  3. Mvc 模块化开发

    在Mvc中,标准的模块化开发方式是使用Areas,每一个Area都可以注册自己的路由,使用自己的控件器与视图.但是在具体使用上它有如下两个限制 1.必须把视图文件放到主项目的Areas文件夹下才能生效 ...

  4. RK3288的gpio设置

    http://www.360doc.com/content/14/1227/18/14351252_436191812.shtml 目录 [隐藏]  1 简介 2 使用 2.1 输入输出 2.2 复用 ...

  5. 我的Android第一章

    一.android是什么 基于linux系统下开发的开源系统 二.android的具体架构是什么 硬件[智能设备底层的硬件],驱动[软件和硬件之间沟通的桥梁],Linux系统[一款功能强大代码开源的系 ...

  6. LINQ的基本认识

    前些日子,我的一个兄弟问我一个关于LINQ的问题,他问我AsEnumerable()在他写的一大段代码中的作用. 我不太清楚他是知道想考考我,还是不太清楚,想问题一下,反正我不太知道. 以前接触过一些 ...

  7. 图说函数模板右值引用参数(T&&)类型推导规则(C++11)

    见下图: 规律总结: 只要我们传递一个基本类型是A④的左值,那么,传递后,T的类型就是A&,形参在函数体中的类型就是A&. 只要我们传递一个基本类型是A的右值,那么,传递后,T的类型就 ...

  8. CVE-2016-4758: UXSS in Safari's showModalDialog

    I would like to share about details of Safari's UXSS bug(CVE-2016-4758). This bug was fixed in Safar ...

  9. IMPORT FROM 表数据导入

    Syntax IMPORT FROM [<file_type>] <file_path> [INTO <table_name>] [WITH <import_ ...

  10. ShareSDK 集成 Google+ 登录 400. Error:redirect_uri_mismatch 和 Error Domain=ShareSDKErrorDomain Code=204

    最近在集成ShareSDK中 Google+ 登录授权时候 出现了如下几个问题 1.    400.  Error:redirect_uri_mismatch 出现这种情况, redirectUri应 ...