redis应用;redis经典五种基本类型、java工具类

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: redis应用

redis应用


优点:

降低后端负载,查询压力

提高读写效率,降低响应时间


缺点:

数据一致性成本,mysql如果改变了数据,redis如何同步修改

代码维护成本—代码复杂度

运维成本–redis花钱比es贵,雪崩问题等等

redis

》nosql

非关系型数据库

基于内存的key-value形式

与sql区别:非结构化、无关联的(每个key只要求不同,实际互不干扰)、非sql、没有acdi事务。

单线程、每个命令具备原子性

低延迟、速度快(百万级别)----亮点

支持数据持久化

支持主从集群、分片集群


通用命令:keys (数据量大慎用)

del

exists

expire(有效期)

ttl(查看剩下有效期)

经典五种基本类型

String

string

int

float

字符串最大空间不超过512m

指令

set

get

mset

mget

incr

incrby

incrbyfloat

setnx

setex

可以用:隔开命名

规范 项目名:业务名:类型:id

hash

value是无序字典

类似java hashmap

CRUD单个字段更容易

命令

hset

hget

hmset

hmget

hgetall

hkeys(数据量大慎用)

hvals

hncrby

hsetnx

List

与java linkedlist类似,双向链表,支持正向反向检索

有序

可重复

插入,删除快

查询一般

应用场景:朋友圈点赞列表、评论列表

命令

lpush

lpop

rpush

rpop

lrange

blpop

brpop

补充:队列 先进先出

栈 先进后出

set

与hashset类似

无序

元素不可重复

查找快

支持交集、并集、差集(相对来说SQL实现比较复杂,所以用redis更简洁)


命令

sadd

srem 移除指定

scard 元素个数

sismember 判断一个元素是否存在set中

smembers 所有

sinter 交集

sdiff 差集

sunion 并集


sortedset

可排序set 与treeset类似

元素不重复

查询速度快

应用:排行榜


命令

zadd

zrem

zscore

zrank

zcard

zcount

zincrby

zrange

zrangebyscore

zdiff

zinter

zunion


java工具类

spring data redis

jedis lettuce


jedis

1、引入依赖

<dependency>
<groupId>redis-clients</groupId>
<artifactId>jedis</artifactId>
<version>3.7.0</version>
</dependency>

2、建立连接

private Jedis jedis;
@BrforeEach
void xx() {
  jedis = new Jedis("127.0.0.1",6379);
  jedis.auth("root");
  jedis.select(0);
}

3、实现

@Test
void xx() {
String result = jedis.set("name","df");
jedis.get("name");
}

4、释放资源

@AfterEach
void xx() {
 if(jedis != null) {
  jedis.close();
 }
}

jedis本身线程不安全—》推荐线程池

public class xxx {
  private static final JedisPool jedisPool;
  static {
    JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
    jedisPoolconfig.setMaxTotal(8);
    jedisPoolConfig.setMaxIdle(8);
    jedisPoolConfig.setMinIdle(0);
    jedisPoolConfig.serMaxWaitMilis(200);
    jedisPool = new JedisPool(jedisPoolConfig, "127.0.0.1", 6379, 1000, "root");
    public static Jedis getJedis() {
      return jedisPool.getResource();
}
}
}

SpringDataRedis企业用的多

api

redisTeplate通用

redisTeplate.opsForvalue() String

redisTeplate.opsForHash()

redisTeplate.opsForList()

redisTeplate.opsForSet()

redisTeplate.opsForZSet()


1、引入依赖

<dependency>
  <groupId>org.springframework-boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artiactId>
</dependency>
<dependency>
  <groupId>org.apache.cmmons</groupId>
  <artifactId>commons-pool2</artifactId>
</dependency>

2、配置

spring:

redis:

host: 127.0.0.1

port: 6379

password: root

lettuce:

pool:

max-active: 8

max-idle: 8

min-idle: 0

max-wait: 100

3/应用

@Autowired
private RedisTemplate redisTemplate;
@Test
public void test() {
  redisTemplate.opsForValue().set("name","fds");
  Object name = redisTemplate.opsForValue().get("name");
  sout(name);
}

存入的数据\xAC\xED\x00…

可以序列化处理

1、使用StringRedisTemplate

2、Redis写入对象序列化为JSON

3、Reids读取JSON反序列化为对象

@Autowired
private StringRedisTemplate stringRedisTemplate;
private static final ObjectMapper mapper = new ObjectMapper();
@Test
public void test() throws JsonProcessingException {
  User user = new User(299L,"dfs");
  String json = mapper.writeValueAdString(user);
  String val = stringReditsTemplate.opsForValue().set("user:newUser:" + user.getId());
  User result = mapper.redValue(val, User.class);
  sout(result);
  }
}
相关文章
|
1月前
|
存储 数据采集 搜索推荐
Java 大视界 -- Java 大数据在智慧文旅旅游景区游客情感分析与服务改进中的应用实践(226)
本篇文章探讨了 Java 大数据在智慧文旅景区中的创新应用,重点分析了如何通过数据采集、情感分析与可视化等技术,挖掘游客情感需求,进而优化景区服务。文章结合实际案例,展示了 Java 在数据处理与智能推荐等方面的强大能力,为文旅行业的智慧化升级提供了可行路径。
Java 大视界 -- Java 大数据在智慧文旅旅游景区游客情感分析与服务改进中的应用实践(226)
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
Java 大视界 -- 基于 Java 的大数据可视化在城市空气质量监测与污染溯源中的应用(216)
本文探讨Java大数据可视化在城市空气质量监测与污染溯源中的创新应用,结合多源数据采集、实时分析与GIS技术,助力环保决策,提升城市空气质量管理水平。
Java 大视界 -- 基于 Java 的大数据可视化在城市空气质量监测与污染溯源中的应用(216)
|
1月前
|
存储 监控 数据可视化
Java 大视界 -- 基于 Java 的大数据可视化在企业生产运营监控与决策支持中的应用(228)
本文探讨了基于 Java 的大数据可视化技术在企业生产运营监控与决策支持中的关键应用。面对数据爆炸、信息孤岛和实时性不足等挑战,Java 通过高效数据采集、清洗与可视化引擎,助力企业构建实时监控与智能决策系统,显著提升运营效率与竞争力。
|
1月前
|
Java 大数据 数据处理
Java 大视界 -- 基于 Java 的大数据实时数据处理在工业互联网设备协同制造中的应用与挑战(222)
本文探讨了基于 Java 的大数据实时数据处理在工业互联网设备协同制造中的应用与挑战。文章分析了传统制造模式的局限性,介绍了工业互联网带来的机遇,并结合实际案例展示了 Java 在多源数据采集、实时处理及设备协同优化中的关键技术应用。同时,也深入讨论了数据安全、技术架构等挑战及应对策略。
|
1月前
|
数据采集 搜索推荐 Java
Java 大视界 -- Java 大数据在智能教育虚拟学习环境构建与用户体验优化中的应用(221)
本文探讨 Java 大数据在智能教育虚拟学习环境中的应用,涵盖多源数据采集、个性化推荐、实时互动优化等核心技术,结合实际案例分析其在提升学习体验与教学质量中的成效,并展望未来发展方向与技术挑战。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
Java 大视界 -- Java 大数据机器学习模型在自然语言生成中的可控性研究与应用(229)
本文深入探讨Java大数据与机器学习在自然语言生成(NLG)中的可控性研究,分析当前生成模型面临的“失控”挑战,如数据噪声、标注偏差及黑盒模型信任问题,提出Java技术在数据清洗、异构框架融合与生态工具链中的关键作用。通过条件注入、强化学习与模型融合等策略,实现文本生成的精准控制,并结合网易新闻与蚂蚁集团的实战案例,展示Java在提升生成效率与合规性方面的卓越能力,为金融、法律等强监管领域提供技术参考。
|
1月前
|
存储 人工智能 算法
Java 大视界 -- Java 大数据在智能医疗影像数据压缩与传输优化中的技术应用(227)
本文探讨 Java 大数据在智能医疗影像压缩与传输中的关键技术应用,分析其如何解决医疗影像数据存储、传输与压缩三大难题,并结合实际案例展示技术落地效果。
|
1月前
|
机器学习/深度学习 安全 Java
Java 大视界 -- Java 大数据在智能金融反洗钱监测与交易异常分析中的应用(224)
本文探讨 Java 大数据在智能金融反洗钱监测与交易异常分析中的应用,介绍其在数据处理、机器学习建模、实战案例及安全隐私等方面的技术方案与挑战,展现 Java 在金融风控中的强大能力。
|
1月前
|
机器学习/深度学习 算法 Java
Java 大视界 -- Java 大数据机器学习模型在生物信息学基因功能预测中的优化与应用(223)
本文探讨了Java大数据与机器学习模型在生物信息学中基因功能预测的优化与应用。通过高效的数据处理能力和智能算法,提升基因功能预测的准确性与效率,助力医学与农业发展。
|
1月前
|
机器学习/深度学习 搜索推荐 数据可视化
Java 大视界 -- Java 大数据机器学习模型在电商用户流失预测与留存策略制定中的应用(217)
本文探讨 Java 大数据与机器学习在电商用户流失预测与留存策略中的应用。通过构建高精度预测模型与动态分层策略,助力企业提前识别流失用户、精准触达,实现用户留存率与商业价值双提升,为电商应对用户流失提供技术新思路。