Redis入门学习笔记一
Redis 简要描述:
1. Redis 是啥 ?
Redis 英文名称全称为: Remote Dictionary Server ,中译为远程字典服务器。 是一款区分于磁盘数据库如(Mysql)的采用Key-Value键值对的字典结构的缓存数据库。
2. Redis有什么作用?
Redis作为一款内存数据库,其最大的有点就是高速,对于那些高频访问的数据,进行加缓存。Redis加载缓存的时候使用的LRU机制,对于热点数据将会持续保留,其他的将会被淘汰。
Redis涉及到的LRU简要源码解析算法实现:
- 1 package com.mysql.jdbc.util;
- 2
- 3 import java.util.LinkedHashMap;
- 4 import java.util.Map.Entry;
- 5
- 6 public class LRUCache extends LinkedHashMap {
- 7 private static final long serialVersionUID = 1L;
- 8 protected int maxElements;
- 9
- 10 public LRUCache(int maxSize) {
- 11 super(maxSize, 0.75F, true);
- 12 this.maxElements = maxSize;
- 13 }
- 14
- 15 protected boolean removeEldestEntry(Entry eldest) {
- 16 return this.size() > this.maxElements;
- 17 }
- 18 }
注解: Lru算法使用Java jdk提供的LinkedHashMap实现
- package com.hbut.util;
- import java.util.LinkedHashMap;
- import java.util.Map;
- /**
- * @Author XiJun.Gong
- * @DATE 2016/6/11.
- * aim: com.hbut.util
- */
- public class Lru extends LinkedHashMap {
- private static final long serialVersionUID = 1L;
- private int maxElements = 5; //default size is 5
- public int getMaxElements() {
- return maxElements;
- }
- public void setMaxElements(int maxElements) {
- this.maxElements = maxElements;
- }
- /**
- * if size > maxElements remove this old entry and
- * add new entry
- * @param eldest
- * @return true or false
- */
- protected boolean removeEldestEntry(Map.Entry eldest) {
- return size() > this.maxElements;
- }
- }
Redis如何使用java是测试用例:
使用Maven配置pom.xml
- 1 <!--Redis cache -->
- 2 <dependency>
- 3 <groupId>redis.clients</groupId>
- 4 <artifactId>jedis</artifactId>
- 5 <version>${redis.clients.version}</version>
- 6 <type>jar</type>
- 7 <scope>compile</scope>
- 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 package com.hbut.util;
- 2
- 3 import com.google.common.collect.Maps;
- 4 import org.junit.Before;
- 5 import org.junit.Test;
- 6 import redis.clients.jedis.Jedis;
- 7 import redis.clients.jedis.JedisPool;
- 8 import redis.clients.jedis.JedisPoolConfig;
- 9
- 10 import java.io.*;
- 11 import java.util.Iterator;
- 12 import java.util.List;
- 13 import java.util.Map;
- 14
- 15 /**
- 16 * Created by XiJun.Gong on 14-2-28.
- 17 */
- 18 public class TestRedis {
- 19
- 20
- 21 JedisPool pool;
- 22 Jedis jedis;
- 23
- 24 /**
- 25 * connection
- 26 */
- 27 @Before
- 28 public void init() {
- 29 pool = new JedisPool(new JedisPoolConfig(), "localhost");
- 30 jedis = pool.getResource();
- 31 //jedis.auth("*******"); //密码验证
- 32 }
- 33
- 34
- 35 /**
- 36 * 存储字符串,设置失效时间
- 37 */
- 38 @Test
- 39 public void RedisTest() throws InterruptedException {
- 40 jedis.set("google", "entry1");
- 41 System.out.println(jedis.get("google"));
- 42 jedis.expire("google", 3); //设置过期时间
- 43 Thread.sleep(5000);
- 44 System.out.println(jedis.get("google"));
- 45 }
- 46
- 47
- 48 /**
- 49 * CRUD for String
- 50 */
- 51 @Test
- 52 public void redisCRUD() {
- 53 /**add**/
- 54 jedis.set("key", "google");
- 55 System.out.println(jedis.get("key"));
- 56 /**delete**/
- 57 jedis.del("key");
- 58 System.out.println(jedis.get("key"));
- 59 /*modify*/
- 60 jedis.append("key", "Qunar.com");
- 61 System.out.println(jedis.get("key"));
- 62 /**another method**/
- 63 jedis.set("key", "Tencent");
- 64 System.out.println(jedis.get("key"));
- 65
- 66 /**Multi value mapping key**/
- 67 jedis.mset("key", "google", "tencent", "Qunar");
- 68 System.out.println(jedis.mget("key", "google"));
- 69
- 70 /*for map*/
- 71 Map<String, String> user = Maps.newHashMap();
- 72 user.put("huifeidmeng", "Qunar");
- 73 jedis.hmset("user", user);
- 74 List<String> rsmap = jedis.hmget("user", "key");
- 75 System.out.println(rsmap);
- 76
- 77 }
- 78
- 79 }
Redis入门学习笔记一的更多相关文章
- Redis——入门学习笔记
Redis学习 说到前面:这篇笔记只是我作为一个Redis新手,从0到认知的一个过程.后续会持续深入学习. 学习初衷和计划 学习Redis,因为这是热门技术,必须掌握的技术,别人都会我不会.就这一点就 ...
- 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)
[原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...
- Redis:学习笔记-01
Redis:学习笔记-01 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 1. Redis入门 2.1 ...
- Hadoop入门学习笔记---part4
紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...
- Hadoop入门学习笔记---part3
2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...
- PyQt4入门学习笔记(三)
# PyQt4入门学习笔记(三) PyQt4内的布局 布局方式是我们控制我们的GUI页面内各个控件的排放位置的.我们可以通过两种基本方式来控制: 1.绝对位置 2.layout类 绝对位置 这种方式要 ...
- PyQt4入门学习笔记(一)
PyQt4入门学习笔记(一) 一直没有找到什么好的pyqt4的教程,偶然在google上搜到一篇不错的入门文档,翻译过来,留以后再复习. 原始链接如下: http://zetcode.com/gui/ ...
- Hadoop入门学习笔记---part2
在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建ha ...
- Hadoop入门学习笔记---part1
随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力, ...
随机推荐
- kafka常用命令
以下是kafka常用命令行总结: 0.查看有哪些主题: ./kafka-topics.sh --list --zookeeper 192.168.0.201:12181 1.查看topic的详细信息 ...
- windows+caffe(七)——ComputeImageMean.bat
1.首先我们使用lmdb数据格式(怎样得到lmdb数据格式,看我的另一篇)求得均值: 新建ComputeImageMean.bat,里面输入: D:/deeptools/caffe-windows-m ...
- Mvc 模块化开发
在Mvc中,标准的模块化开发方式是使用Areas,每一个Area都可以注册自己的路由,使用自己的控件器与视图.但是在具体使用上它有如下两个限制 1.必须把视图文件放到主项目的Areas文件夹下才能生效 ...
- RK3288的gpio设置
http://www.360doc.com/content/14/1227/18/14351252_436191812.shtml 目录 [隐藏] 1 简介 2 使用 2.1 输入输出 2.2 复用 ...
- 我的Android第一章
一.android是什么 基于linux系统下开发的开源系统 二.android的具体架构是什么 硬件[智能设备底层的硬件],驱动[软件和硬件之间沟通的桥梁],Linux系统[一款功能强大代码开源的系 ...
- LINQ的基本认识
前些日子,我的一个兄弟问我一个关于LINQ的问题,他问我AsEnumerable()在他写的一大段代码中的作用. 我不太清楚他是知道想考考我,还是不太清楚,想问题一下,反正我不太知道. 以前接触过一些 ...
- 图说函数模板右值引用参数(T&&)类型推导规则(C++11)
见下图: 规律总结: 只要我们传递一个基本类型是A④的左值,那么,传递后,T的类型就是A&,形参在函数体中的类型就是A&. 只要我们传递一个基本类型是A的右值,那么,传递后,T的类型就 ...
- 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 ...
- IMPORT FROM 表数据导入
Syntax IMPORT FROM [<file_type>] <file_path> [INTO <table_name>] [WITH <import_ ...
- ShareSDK 集成 Google+ 登录 400. Error:redirect_uri_mismatch 和 Error Domain=ShareSDKErrorDomain Code=204
最近在集成ShareSDK中 Google+ 登录授权时候 出现了如下几个问题 1. 400. Error:redirect_uri_mismatch 出现这种情况, redirectUri应 ...