Redis是一种高级的、开源的、基于内存的键值存储系统,它也可以被认为是一种数据结构服务器,因为键可以关联到五种不同的数据结构:字符串、哈希表、列表、集合、有序集合。
Redis以其高性能、灵活性和丰富的数据结构支持而著称,数据不仅存储在内存中以实现快速访问,同时也支持持久化机制(例如RDB和AOF),保证即使在服务器重启时数据也不会丢失。
Redis支持多种编程语言的客户端,常用于缓存、消息队列、实时排行榜、社交网络、游戏开发等多个场景,尤其在需要高性能、低延迟的数据读写操作中表现优异。
在日后开发中,选用的基本都是非关系型数据库,例如:Redis、MongoDB、NoSql。
那么非关系型数据库Redis与关系型数据库mysql相比优势:
1、性能优势:
- 内存存储:Redis将数据存储在内存中,使得读写操作具有非常高的性能,响应时间通常是微秒级别,特别适合对性能要求极高的场景,如高速缓存、实时排行榜、计数器等。
- 数据结构丰富:Redis 支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,可以满足复杂的应用场景需求,简化开发工作。
2、实时性:
- Redis 可以提供实时的数据更新和查询,对于需要实时数据同步的场景非常适合。
3、缓存功能:
- Redis 被广泛应用于缓存层,减轻数据库负载,加速数据访问。它可以快速地将热点数据存储在内存中,减少对数据库的直接读取,提升整体系统的性能。
4、高并发能力:
- Redis 具备优秀的并发处理能力,能有效应对大规模并发请求,尤其是读密集型操作。
5、分布式支持:
- Redis 支持主从复制、哨兵模式、集群模式等,能够构建高可用、可扩展的分布式缓存和存储系统。
相比之下,MySQL 是一种关系型数据库管理系统,它与 Redis 的区别主要有:
- 数据持久化:
- MySQL 数据默认存储在硬盘上,数据更加持久稳定,不会因为服务器重启或故障丢失数据(除非未做备份或同步)。- Redis 提供了 RDB 快照和 AOF 日志两种持久化机制,但其首要定位还是内存数据库,虽然也能持久化数据,但在数据安全性方面不如 MySQL 那样可靠。
- 数据模型和查询能力:
- MySQL 支持 SQL 查询语句,拥有强大的 ACID 特性,适用于复杂的事务处理和高度结构化的数据存储。- Redis 不支持 SQL 语句,但它支持丰富的数据结构操作命令,更适合简单的数据操作和快速查找。
- 容量与成本:
- MySQL 受限于磁盘存储,理论上可以无限扩容,成本相对较低。- Redis 的存储受限于内存大小,虽然可以利用虚拟内存或其他手段来扩展,但受物理内存限制,且内存的成本相对较高。
- 适用场景:
- MySQL 适用于需要持久化大量数据、高度一致性和复杂查询的场合,如传统的后台管理系统、ERP、CRM等。- Redis 更适合缓存、实时计算、会话存储、消息队列、排行榜等需要快速读写的场景。
如何使用Redis,Redis的安装下载
首先将如下两个安装包下载到电脑
链接:百度网盘 请输入提取码
提取码:9999
下载好之后
我们要使用redis数据库时候,一定要先启动redis-server.exe,双击即可启动:
另一个是快捷程序,下载好直接双击打开可以看到如下页面:
新建数据库
新建键值对
JavaAPI操作Redis,对数据库进行增删改查
1、新建一个maven工程,
Spring框架中用来配置Jedis连接池以及相关Redis连接参数的xml文件
新建applicationContext-redis.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--Jedis连接池的相关配置
定义一个名为jedisPoolConfig的bean,其类型为redis.clients.jedis.JedisPoolConfig
即Jedis连接池的配置类-->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal">
<value>200</value>
</property>
<property name="maxIdle">
<value>50</value>
</property>
<property name="testOnBorrow" value="true"/>
<property name="testOnReturn" value="true"/>
</bean>
<!-- Jedis连接池实例化部分
构造此连接池时,通过构造函数传入四个参数-->
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="poolConfig" ref="jedisPoolConfig" />
<constructor-arg name="host" value="127.0.0.1" />
<constructor-arg name="port" value="6379" type="int" />
<constructor-arg name="timeout" value="30000" type="int" />
</bean>
</beans>
这段配置文件创建了一个Jedis连接池实例,并对其配置进行了详细的定制,包括最大连接数、最大空闲连接数、连接有效性检测策略以及Redis服务的基本连接参数。
在实际应用中,通过Spring容器,可以通过**getBean("jedisPool")**的方式获取到这个配置好的连接池实例,进而高效、安全地访问Redis数据库。
web.xml加载spring容器
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!-- 加载spring容器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
配置完成后,新建class类:
添加方法[sadd]
package com.softeem.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import redis.clients.jedis.JedisPool;
import java.util.Set;
/*
测试一下redis中的添加,删除,差集,方法
*/
public class RedisTest {
public static void main(String[] args) {
// 初始化Spring应用上下文对象
// 这行代码创建了一个ClassPathXmlApplicationContext对象,它会在类路径下查找所有匹配applicationContext-*.xml模式的XML配置文件,并加载这些文件来配置Spring容器。
ClassPathXmlApplicationContext ac =
new ClassPathXmlApplicationContext("classpath:applicationContext-*.xml");
// 从Spring容器中获取已配置好的JedisPool bean
JedisPool jedisPool = ac.getBean("jedisPool", JedisPool.class);
jedisPool.getResource().sadd("names3", "小明", "小红", "小花", "小刚");
jedisPool.getResource().sadd("names4", "小明", "小红");
}
}
可在redis程序页面上看见
删除 [rem]:
差集sdiff:
版权归原作者 小路的蹊 所有, 如有侵权,请联系我们删除。