package com.shujia.controller;

import com.shujia.entity.MyTypedTuple;

import com.shujia.entity.User;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.connection.DataType;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.data.redis.core.StringRedisTemplate;

import org.springframework.data.redis.core.ZSetOperations;

import org.springframework.data.redis.serializer.RedisSerializer;

import org.springframework.data.redis.serializer.StringRedisSerializer;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisPool;

import redis.clients.jedis.JedisPoolConfig;

import java.time.Duration;

import java.util.*;

/*

StringRedisTemplate:操作的是 string Value 也是string 的数据;

Redis 中的 value的类型是:string,list,set,zset,hash

RedisTemplate:key -- Object value --Object

            key    valule
原本 string string
name ---->namexxx
现在读的时候,会将键进行序列化,讲序列化后的值再取值redis 去找这个键,由于原本的name的值是字符串没有进行序列化,所以找不到,
redisTemplate 默认是做JdkSerializationRedisSerializer
如果查找的是一个字符串,将序列化方式变成自负床方式序列化;

*/

@RestController

public class TestController {

@Autowired

private StringRedisTemplate stringRedisTemplate;

@Autowired

protected RedisTemplate<Object, Object> redisTemplate;

@RequestMapping("testKey")
public String testKey() {

// Boolean name = stringRedisTemplate.delete("name");

// System.out.println(name);

Set keys = stringRedisTemplate.keys("*");

System.out.println(keys);

    Boolean address = stringRedisTemplate.hasKey("address");
System.out.println(address);
DataType age = stringRedisTemplate.type("age");
System.out.println(age); return "测试完毕" + keys;
} @RequestMapping("testString")
public String testString() {
stringRedisTemplate.opsForValue().set("name2", "xiaoxiao");
stringRedisTemplate.opsForValue().set("name3", "xiaoma", Duration.ofSeconds(10l));
String name = stringRedisTemplate.opsForValue().get("name");
System.out.println(name);
Integer name1 = stringRedisTemplate.opsForValue().append("name", "---chinese");
System.out.println(name1);
ArrayList<String> strings = new ArrayList<>();
strings.add("name");
strings.add("age");
strings.add("address");
strings.add("like");
strings.add("sex");
for (String string : strings) {
System.out.println(string);
}
List<String> list = stringRedisTemplate.opsForValue().multiGet(strings);
System.out.println(list);
return "测试String完毕!!!" + name + "\t" + name1 + "\t" + "\t" + strings + "第二个" + "\t" + list;
} @RequestMapping("testList")
public String testList() {
stringRedisTemplate.opsForList().leftPush("list", "aaa");
stringRedisTemplate.opsForList().leftPush("list", "bbb");
List<String> list = stringRedisTemplate.opsForList().range("list", 0, -1); stringRedisTemplate.opsForList().trim("list", 0, 2); System.out.println(list);
return "测试完毕testList!!!" + list;
} @RequestMapping("testZset")
public String testZet() {
//一次添加一个 stringRedisTemplate.opsForZSet().add("zset1", "xiaoming", 100); //一次性添加多个元素 HashSet<ZSetOperations.TypedTuple<String>> set = new HashSet<>();
MyTypedTuple xiaoming = new MyTypedTuple("xiaoming", 80.0);
MyTypedTuple xiaohu = new MyTypedTuple("xiaohu", 50.0);
MyTypedTuple xiaoma = new MyTypedTuple("xiaoma", 10.0);
set.add(xiaoming);
set.add(xiaohu);
set.add(xiaoma);
stringRedisTemplate.opsForZSet().add("set", set);
Set<String> zset = stringRedisTemplate.opsForZSet().rangeByScore("set", 10, 100);
System.out.println("set" + zset); Set<ZSetOperations.TypedTuple<String>> set1 = stringRedisTemplate.opsForZSet().rangeByScoreWithScores("set", 10, 100);
System.out.println("set1" + set1); Set<String> set2 = stringRedisTemplate.opsForZSet().reverseRange("set", 0, 100);
System.out.println("set2" + set2);
//查询并查看分数;
Set<String> set3 = stringRedisTemplate.opsForZSet().reverseRangeByScore("set", 0, -1);
System.out.println("set3" + set3);
System.out.println("-----------------------");
//根据分数降序查看,并且打印出来;
Set<ZSetOperations.TypedTuple<String>> set4 = stringRedisTemplate.opsForZSet().reverseRangeByScoreWithScores("set", 0, 100);
System.out.println("set4" + set4);
for (ZSetOperations.TypedTuple<String> stringTypedTuple : set4) {
String value = stringTypedTuple.getValue();
Double score = stringTypedTuple.getScore();
System.out.println(value + "--" + score); } return "测试完毕!!!"; } @RequestMapping("testHash")
public String testHashash() {
//一次添加一个数据
stringRedisTemplate.opsForHash().put("1001", "name", "xiaoming");
//一次添加多个数据
HashMap<Object, Object> map = new HashMap<>();
map.put("name ", "xiaoma");
map.put("age ", "18");
map.put("like ", "bannal");
map.put("address ", "hefei");
map.put("爱好 ", "看书写字");
//将对应的取值对应的小key 组成一个Collection集合
ArrayList<Object> arrayList = new ArrayList<>();
arrayList.add("name");
arrayList.add("age");
arrayList.add("like");
arrayList.add("address");
arrayList.add("爱好"); stringRedisTemplate.opsForHash().putAll("1002", map);
List<Object> list = stringRedisTemplate.opsForHash().multiGet("1002", arrayList);
System.out.println(list); return "测试完毕!!!"; } @RequestMapping("testObject")
public String testObject() {
//构建redis 资源连接池配置
JedisPoolConfig poolConfig = new JedisPoolConfig();
//给定个数
poolConfig.setMaxTotal(100);
//根据配置来创建redis连接
JedisPool jedisPool = new JedisPool(poolConfig, "192.168.170.110", 7000);
//在连接池中构建连接redis
Jedis jedis = jedisPool.getResource(); //拿着这个连接操作redis
String name1 = jedis.get("name");
System.out.println(name1); //释放资源
jedis.close(); redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.opsForValue().set("name", "xiaowang"); Object name = redisTemplate.opsForValue().get("name");
System.out.println(name);
RedisSerializer<?> keySerializer = redisTemplate.getKeySerializer();
System.out.println(keySerializer);
//存储一个对象到redis
User user = new User("1001", "xiangyu", 18);
redisTemplate.opsForValue().set("user1", "user");
//针对hash小key进行序列化
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.opsForHash().put("user2", "name", user);
return "测试完毕!!!" + name;
}

}

Redis相关练习操作,redis连接池的更多相关文章

  1. Spring整合Redis,并配置Jedis连接池

    目录 只言片语 创建redis连接池的配置文件 单机版 spring整合redis(使用JedisPool) 项目中使用示例 集群版 spring整合redis(使用JedisCluster) 项目中 ...

  2. springboot使用redis的配置application.yml连接池以及存取

    第一步:添加pom文件依赖: <!-- redis --> <dependency> <groupId>redis.clients</groupId> ...

  3. redis-手写redis切片和非切片连接池并注入springboot中

    spring-data整合了redispool, 并提供redisTemplate使用, 但有时需要用到shradedJedisPool, 就需要手动注入了 手写redispool并注入springb ...

  4. Redis缓存 ava-Jedis操作Redis,基本操作以及 实现对象保存

    源代码下载: http://download.csdn.net/detail/jiangtao_st/7623113 1.Maven配置 <dependency> <groupId& ...

  5. 尚硅谷redis学习11-jedis操作redis

    前面学习了redis的知识后,下面学习一下如何在java中通过jedis操作redis. 所需jar包:commons-pool-xxxx.jar,jedis-xxx.jar 下面看一下常用操作: 1 ...

  6. Redis 以及 Python操作Redis

    Redis Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis有以下特点: -- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可 ...

  7. redis相关笔记(三.redis设计与实现(笔记))

    redis笔记一 redis笔记二 redis笔记三 1.数据结构 1.1.简单动态字符串: 其属性有int len:长度,int free:空闲长度,char[] bur:字符数组(内容) 获取字符 ...

  8. mongodb or操作与连接池

    mongodb # 类似于sql中的in或者or操作 mulites field query: db.cool.find({$or:[{field1:'val'},{'field2':'val'}-] ...

  9. 【redis】java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用

    java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用 //重新设置过期时间为30分钟,刷新时间 redisTemplate.expire(MsOp ...

随机推荐

  1. 『现学现忘』Git基础 — 21、git diff命令

    目录 1.git diff 命令说明 2.比较工作区与暂存区中文件的差别 3.比较暂存区与本地库中文件的差别 4.总结git diff命令常见用法 5.总结 1.git diff 命令说明 在comm ...

  2. REST APIs

    REST APIs 旨在通过HTTP 的动作语义METHOD, 以替代各种传统CRUD 操作所带来的命名问题,例如 "/userAdd"."/userDelete&quo ...

  3. 软件项目管理 ——1.2.PMBOK与软件项目管理知识体系

    软件项目管理 --1.2.PMBOK与软件项目管理知识体系 归档于软件项目管理初级学习路线 第一章 软件项目管理基本概念 <初级学习路线合集 > @ 目录 软件项目管理 --1.2.PMB ...

  4. 解决windows server 2008r2服务器自动关机

    问题 具体表现就是系统自动关机,网上说是开机后2小时就会自动关机 系统版本: 解决 PsTools下载 解压:PSTools.zipg,如解压到C:\PSTools目录下 执行如下命令,打开注册表 W ...

  5. Spring 源码(16)Spring Bean的创建过程(7)属性填充

    知识回顾 上一篇介绍了Spring中三级缓存的singletonObjects.earlySingletonObjects.singletonFactories,Spring在处理循环依赖时在实例化后 ...

  6. linux篇-linux 下tomcat服务每天定时启动

    1l先准备一个脚本 #!/bin/sh #./etc/profile export JAVA_HOME=/usr/java/jdk1.6.0_45 sh /home/tomcat-bingchuang ...

  7. autohotkey(AHK)实现箭头映射

    起因 在主力本上使用了AHK实现alt ijkl的箭头映射,在另一个本子上怎么都不习惯,于是网上找教程,找了半天... 因为大家习惯了快捷键都不一样,为了避免以后浪费时间,因此开此文记录. 操作 ht ...

  8. 小样本利器1.半监督一致性正则 Temporal Ensemble & Mean Teacher代码实现

    这个系列我们用现实中经常碰到的小样本问题来串联半监督,文本对抗,文本增强等模型优化方案.小样本的核心在于如何在有限的标注样本上,最大化模型的泛化能力,让模型对unseen的样本拥有很好的预测效果.之前 ...

  9. 中国天气api接口xml,json

    http://m.weather.com.cn/data/101110101.html 大坑有木有??反应慢不说了,还老不更新!! 想贴段代码的,现在又打不 开了(貌似3月4号以后没更新过) ==== ...

  10. 16.Nginx优化与防盗链

    Nginx优化与防盗链 目录 Nginx优化与防盗链 隐藏版本号 修改用户与组 缓存时间 日志切割 小知识 连接超时 更改进程数 配置网页压缩 配置防盗链 配置防盗链 隐藏版本号 可以使用 Fiddl ...