Redis相关练习操作,redis连接池
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连接池的更多相关文章
- Spring整合Redis,并配置Jedis连接池
目录 只言片语 创建redis连接池的配置文件 单机版 spring整合redis(使用JedisPool) 项目中使用示例 集群版 spring整合redis(使用JedisCluster) 项目中 ...
- springboot使用redis的配置application.yml连接池以及存取
第一步:添加pom文件依赖: <!-- redis --> <dependency> <groupId>redis.clients</groupId> ...
- redis-手写redis切片和非切片连接池并注入springboot中
spring-data整合了redispool, 并提供redisTemplate使用, 但有时需要用到shradedJedisPool, 就需要手动注入了 手写redispool并注入springb ...
- Redis缓存 ava-Jedis操作Redis,基本操作以及 实现对象保存
源代码下载: http://download.csdn.net/detail/jiangtao_st/7623113 1.Maven配置 <dependency> <groupId& ...
- 尚硅谷redis学习11-jedis操作redis
前面学习了redis的知识后,下面学习一下如何在java中通过jedis操作redis. 所需jar包:commons-pool-xxxx.jar,jedis-xxx.jar 下面看一下常用操作: 1 ...
- Redis 以及 Python操作Redis
Redis Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis有以下特点: -- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可 ...
- redis相关笔记(三.redis设计与实现(笔记))
redis笔记一 redis笔记二 redis笔记三 1.数据结构 1.1.简单动态字符串: 其属性有int len:长度,int free:空闲长度,char[] bur:字符数组(内容) 获取字符 ...
- mongodb or操作与连接池
mongodb # 类似于sql中的in或者or操作 mulites field query: db.cool.find({$or:[{field1:'val'},{'field2':'val'}-] ...
- 【redis】java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用
java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用 //重新设置过期时间为30分钟,刷新时间 redisTemplate.expire(MsOp ...
随机推荐
- 盘点提高国内访问 Github 的速度的 9 种方案
开源Linux 长按二维码加关注~ 上一篇:一行代码如何隐藏Linux进程? 来源:https://urlify.cn/IFzQRb GitHub 镜像访问 GitHub文件加速 Github 加速下 ...
- Django学习——分组查询、图书管理系统项目、wsgi, uwsgi, cgi, fastcgi
1 分组查询 # 分组查询 # 查询每一个出版社id,以及图书平均价格(单表) # 原生sql # select publish_id,avg(price) from app01_book group ...
- 腾讯tbs 内存泄露
一.背景 TBS(腾讯浏览服务)是腾讯提供的移动端webview体验的整套解决方案(https://x5.tencent.com/docs/index.html),可以用于移动端加载doc.xls.p ...
- 项目完成小结 - Django3.x版本 - 开发部署小结 (2)
前言 好久没更新博客了,最近依然是在做之前博客说的这个项目:项目完成 - 基于Django3.x版本 - 开发部署小结 这项目因为前期工作出了问题,需求没确定好,导致了现在要做很多麻烦的工作,搞得大家 ...
- H5如何实现唤起APP
前言 写过hybrid的同学,想必都会遇到这样的需求,如果用户安装了自己的APP,就打开APP或跳转到APP内某个页面,如果没安装则引导用户到对应页面或应用商店下载.这里就涉及到了H5与Native之 ...
- WPF全局异常处理
private void RegisterEvents() { //Task线程内未捕获异常处理事件 TaskScheduler.UnobservedTaskException += TaskSche ...
- 学习Java的第十六天——随机数
学习内容:随机数 1.GetEvenNum()方法 实例代码: package 数字处理类; public class MathRondom {public static int GetEvenNum ...
- 官方出品,比 mydumper 更快的逻辑备份工具
mysqldump 和 mydumper 是我们常用的两个逻辑备份工具. 无论是 mysqldump 还是 mydumper 都是将备份数据通过 INSERT 的方式写入到备份文件中. 恢复时,myl ...
- Linux版本的项目环境搭建
项目环境docker及docker-compose文档 1.Linux环境介绍 centos7.6 16G以上内存空间(至少8G) 2.静态IP设置 1.找到配置文件 cd /etc/sysconfi ...
- html关键字大全
html标签属性大全 html标签属性大全从网上搜集整理的常用html标签,供朋友们交流学习html用. html标签<marquee> <marquee>...</ma ...