1.Redis

这就不必哆嗦了,Redis 支持丰富的数据类型,String ,List,Sets ,Sorted Sets,Hashes,这就可以看出Java 操作Redis就要针对各种类型都有自己的操作。这里自己学习的是Spring-data-redis 中基于Jedis connection的不过在RedisTemplate 中 可不管这些,全部都是 connect 的操作,所以 我想说,记得引Jedis的Jar包,而且还要是2.0以上的哦

2.安装Redis

这也不罗嗦了,这里简单说下Redis cli 中的简单操作

(1) String

SET NAME ZHANG

GET NAME

INCR ,APPEND GETRANGE,MSET,STRLENGTH.

(2) LIST

LPUSH name zhang

LPUSH name hao ni zhen shi yi ge SB

LLEN name

LREM name xx

(3)SETS

SADD name zhang

SADD name zhang

SADD name hao

SMEMBERS name

(4) Sorted Sets

ZADD name 1 zhang

ZADD name 2 hao

ZRANGE

(5)HASHes

HSET name:1 name zhang

HSET name:1 last     hao

HGET name:1 name

HGETALL name:1

3.简单的用Spring-data-redis

当然 关联的Jar 包用Maven 来搞,(前段时间Maven不好使,生不如死呀,各种看错误来加Jar包),然后就是在Spring  applicationContext,xml中配置了

首先:Jedis 的连接池:redis.clients.jedis.JedisPoolConfig 见仁见智

  1. <!-- 配置Jedis的 缓冲池 -->
  2. <bean id="JedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"
  3. p:maxActive="32"
  4. p:maxIdle="6"
  5. p:maxWait="15000"
  6. p:minEvictableIdleTimeMillis="300000"
  7. p:numTestsPerEvictionRun="3"
  8. p:timeBetweenEvictionRunsMillis="60000"
  9. p:whenExhaustedAction="1">
  10. </bean>

第二,创建ConnectionFactory

  1. <!-- 配置Jedis connection -->
  2. <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
  3. p:poolConfig-ref="JedisPoolConfig"
  4. p:hostName="192.168.137.100"
  5. p:port="6379"
  6. p:usePool="true"
  7. >
  8. </bean>

第三:创建RedisTemplate

  1. <!-- 配置 redisTemplate 利用Stringserializer -->
  2. <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
  3. p:connectionFactory-ref="connectionFactory"
  4. >
  5. <property name="defaultSerializer">
  6. <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
  7. </property>
  8. </bean>

由于redis中存储的数据必须是经过序列化的,所以Spring-data-redis中采取了几种序列化模式,有自带的JDKblablabla,还有StringRedisSerializer,

但是Json 和XML也都是基于String类型的所以就在默认文件中使用String类型的序列化,而默认是JdkSerializationRedisSerializer.

  1. public class RedisTemplate<K, V> extends RedisAccessor implements RedisOperations<K, V> {
  2. private boolean exposeConnection = false;
  3. private boolean initialized = false;
  4. private boolean enableDefaultSerializer = true;
  5. private RedisSerializer<?> defaultSerializer = new JdkSerializationRedisSerializer();

先不管那么多了,来做点简单的实验。

1.String

  1. RedisTemplate rt = (RedisTemplate) context.getBean("redisTemplate");
  2. rt.opsForValue().set("zhang", "hao");
  3. System.out.println(rt.opsForValue().get("zhang"));

2.List

说到List  Redis 提供了类似于消息队列的操作,先看下接口,从名字上就可以看到这些操作的意义,我就简单实例一下。

  1. public interface ListOperations<K, V> {
  2. List<V> range(K key, long start, long end);
  3. void trim(K key, long start, long end);
  4. Long size(K key);
  5. Long leftPush(K key, V value);
  6. Long leftPushAll(K key, V... values);
  7. Long leftPushIfPresent(K key, V value);
  8. Long leftPush(K key, V pivot, V value);
  9. Long rightPush(K key, V value);
  10. Long rightPushAll(K key, V... values);
  11. Long rightPushIfPresent(K key, V value);
  12. Long rightPush(K key, V pivot, V value);
  13. void set(K key, long index, V value);
  14. Long remove(K key, long i, Object value);
  15. V index(K key, long index);
  16. V leftPop(K key);
  17. V leftPop(K key, long timeout, TimeUnit unit);
  18. V rightPop(K key);
  19. V rightPop(K key, long timeout, TimeUnit unit);
  20. V rightPopAndLeftPush(K sourceKey, K destinationKey);
  21. V rightPopAndLeftPush(K sourceKey, K destinationKey, long timeout, TimeUnit unit);
  22. RedisOperations<K, V> getOperations();

PS.我上面贴的源码是 github上面的最新源码。我自己用的还是1.01  泪千行,我说找了半天rightpushAll 竟然找不到。所以 记得用最新的版本。

  1. String KEYS="LIST:";
  2. rt.opsForList().rightPush(KEYS, "zhang");
  3. rt.opsForList().leftPush(KEYS, "HAO");
  4. // sort : HAO zhang
  5. for(int i=0;i<=rt.opsForList().size(KEYS);i++){
  6. System.out.println(rt.opsForList().rightPop(KEYS));
  7. }

3 Hashes (SETS 自己看看吧。。)

  1. String KEYS="HASH:";
  2. rt.opsForHash().put(KEYS, "name", "zhang");
  3. rt.opsForHash().put(KEYS, "last", "hao");
  4. rt.opsForHash().put(KEYS, "wo", "ni");
  5. rt.opsForHash().put(KEYS, "name", "sb");
  6. System.out.println(rt.opsForHash().get(KEYS, "name"));

可以看到key name 被覆盖了,其中有个BooleanputIfAbsent(Hkey,HKhashKey,HVvalue) 方法,这个具体细节就自己看看吧。下面把Hashoperations 里面的方法贴下:

  1. public interface HashOperations<H, HK, HV> {
  2. void delete(H key, Object... hashKeys);
  3. Boolean hasKey(H key, Object hashKey);
  4. HV get(H key, Object hashKey);
  5. List<HV> multiGet(H key, Collection<HK> hashKeys);
  6. Long increment(H key, HK hashKey, long delta);
  7. Double increment(H key, HK hashKey, double delta);
  8. Set<HK> keys(H key);
  9. Long size(H key);
  10. void putAll(H key, Map<? extends HK, ? extends HV> m);
  11. void put(H key, HK hashKey, HV value);
  12. Boolean putIfAbsent(H key, HK hashKey, HV value);
  13. List<HV> values(H key);
  14. Map<HK, HV> entries(H key);
  15. RedisOperations<H, ?> getOperations();
  16. }

今天就先到这里,Redis 还有很多东西,比如cache transcation 等等 看下目录结构

还有比较多东西,明天继续 再接再厉!

Spring-data-redis 第一天的更多相关文章

  1. spring mvc Spring Data Redis RedisTemplate [转]

    http://maven.springframework.org/release/org/springframework/data/spring-data-redis/(spring-data包下载) ...

  2. Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解

    一.概念简介: Redis: Redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写,详细的信息在Redis官网上面有,因为我自己通过google等各种渠道去学习Redis, ...

  3. spring data redis 理解

    前言 Spring Data Redis project,应用了Spring概念来开发使用键值形式的数据存储的解决方案.我们(官方)提供了一个 "template" ,这是一个高级 ...

  4. Spring Data Redis 让 NoSQL 快如闪电(2)

    [编者按]本文作者为 Xinyu Liu,文章的第一部分重点概述了 Redis 方方面面的特性.在第二部分,将介绍详细的用例.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 把 Redis ...

  5. Spring Data Redis 让 NoSQL 快如闪电 (1)

    [编者按]本文作者为 Xinyu Liu,详细介绍了 Redis 的特性,并辅之以丰富的用例.在本文的第一部分,将重点概述 Redis 的方方面面.文章系国内 ITOM 管理平台 OneAPM 编译呈 ...

  6. Spring Data Redis学习

    本文是从为知笔记上复制过来的,懒得调整格式了,为知笔记版本是带格式的,内容也比这里全.点这里 为知笔记版本 Spring Data Redis 学习 Version 1.8.4.Release 前言 ...

  7. Redis(八):spring data redis 理解

    前言 Spring Data Redis project,应用了Spring概念来开发使用键值形式的数据存储的解决方案.我们(官方)提供了一个 "template" ,这是一个高级 ...

  8. Spring Data Redis入门示例:Hash操作(七)

    将对象存为Redis中的hash类型,可以有两种方式,将每个对象实例作为一个hash进行存储,则实例的每个属性作为hash的field:同种类型的对象实例存储为一个hash,每个实例分配一个field ...

  9. Redis08-击穿&穿透&雪崩&spring data redis

    一.常见概念 击穿: 概念:redis作为缓存,设置了key的过期时间,key在过期的时候刚好出现并发访问,直接击穿redis,访问数据库 解决方案:使用setnx() ->相当于一把锁,设置的 ...

  10. Redis与Spring Data Redis

    1.Redis概述 1.1介绍 官网:https://redis.io/ Redis是一个开源的使用ANSIC语言编写.支持网络.可基于内存 亦可持久化的日志型.Key-Value型的高性能数据库. ...

随机推荐

  1. oa_mvc_easyui_登录完成(2)

    1.使用MVC特有的ajax方式:异步表单提交方式 js文件引用:<script src="~/Scripts/jquery.unobtrusive-ajax.min.js" ...

  2. 关于swiper 4的coverflowEffect(3d)

    轮播效果: HTML: <div class="swiper-container successful_swiper"> <div class="swi ...

  3. Halide安装指南release版本

    Halide安装指南 本版本针对Halide release版本 by jourluohua 使用的是Ubuntu 16.04 64位系统默认Gcc 4.6 由于halide中需要C++ 11中的特性 ...

  4. CentOS7搭建FastDFS V5.11分布式文件系统(二)

    1.CentOS7 FastDFS搭建 前面已下载好了要用到的工具集,下面就可以开始安装了: 如果安装过程中出现问题,可以下载我提供的,当前测试可以通过的工具包: 点这里点这里 1.1 安装libfa ...

  5. Chrome去掉标签页8个框

    最终效果: 解决思路: 在标签页鼠标右击弹出的菜单项中存在“查看页面源码”一项,由此可确定chrome的标签页是由一个html页面控制的,只要修改其页面源码便能去掉8个框. 经网上查阅确定了标签页的源 ...

  6. Linu目录结构和创建用户

    具体目标结构 ./bin [重点] (/usr/bin./usr/local/bin) ●是Binary的速写,这个目录存放着最经常使用的命令. ./sbin (/usr/sbin./usr/loca ...

  7. 通用mapper将另外一个同名的表生成在同一个实体及mapper中

    今天遇见了一个在网上都搜索不到的错误,使用通过mapper生成实体及mapper文件时会将另外一个数据库的同名文件生成在一个实体及mapper中,这样就会造成一个实体和mapper中有两个表的字段,经 ...

  8. Chrome OS 更新新版本可让Linux访问USB连接的Android设备

    谷歌再次为Chrome OS带来了重大版本更新,使版本号达到了75.本次更新的一大亮点就是允许在Chrome OS上运行的Linux能够识别通过USB方式连接的Android设备,能够让用户使用Lin ...

  9. zabbix-server、proxy、agent的分布式部署步骤

    1.准备工作 关闭防火墙和SELinux防火墙,因为他们会限制一些访问权限,如果服务器不能关闭就需要手动设置规则,这里测试用就直接关闭了 service firewalld stop; setenfo ...

  10. Nginx源码安装配置

    Nginx web服务器简介 Nginx ("engine x") 是一个高性能HTTP 和 反向代理 服务器.IMAP.POP3.SMTP 服务器. Nginx 是由 Igor ...