首页 > 数据库 >3.redis数据库

3.redis数据库

时间:2024-06-01 11:45:06浏览次数:25  
标签:Redis 数据库 redis 列表 参数 key 集合 redisTemplate

Redis

简介和使用:

简介:

  • Redis是一个基于内存的key-value结构数据库;
  • 基于内存存储,读写性能高;
  • 适合存储热点数据(热点商品、资讯、新闻);
  • 企业应用广泛;

使用:

  • 启动服务端,命令提示符处于Redis的安装目录下,输入服务端的命令和Redis的配置文件;
  • 启动服务端命令:redis-server.exe redis.windows.conf
  • 启动客户端,命令提示符处于Redis的安装目录下,输入客户端的命令;
  • 启动客户端命令:redis-cli.exe [-h 服务端地址 -p Redis启动的端口号 -a 数据库密码]
  • redis.windows.conf配置文件中设置端口号和密码;
  • requirepass后设置密码,如:requirepass 自定义密码

数据类型:

介绍:

  • Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型;

各数据类型特点:

  • 字符串(string):普通字符串,Redis中最简单的数据类型;
  • 哈希(hash):也叫散列,类似于Java中的HashMap结构;
  • 列表(list):按照插入顺序排序,可以有重复元素,类似于Java中的LinkedList;
  • 集合(set):无序集合,没有重复元素,类似于Java中的HashSet;
  • 有序集合(sorted set / zset):集合中每个元素关联一个分数(score),根据分数升序排序,没有重复元素;

Redis操作命令:

字符串操作命令:

指令 含义
SET key value 设置指定key的值
GET key 获取指定key的值
SETEX key seconds value 设置指定key的值,并将key的过期时间设为seconds秒
SETNX key value 只有在key不存在时设置key的值
DEL key1 key2 删除键

哈希操作命令:

  • 哈希的结构:

指令 含义
HSET key field value 将哈希表key中的字段field的值设为value
HGET key field 获取存储在哈希表中指定字段的值
HDEL key field 删除存储在哈希表中的指定字段
HKEYS key 获取哈希表中所有字段
HVALS key 获取哈希表中所有值

列表操作命令:

  • 列表的结构:

指令 含义
LPUSH key value1 [value2] 将一个或者多个值插入到列表头部
LRANGE key start stop 获取列表指定范围内的元素,从零索引开始,最后的元素可以用-1索引
RPOP key 移除并获取列表最后一个元素
LLEN key 获取列表长度

集合操作命令:

  • 集合的结构:

指令 含义
SADD key member1 [member2] 向集合添加一个或多个成员
SMEMBERS key 返回集合中的所有成员
SCARD key 获取集合的成员数
SINTER key1 [key2] 返回给定所有集合的交集
SUNION key1 [key2] 返回所有给定集合的并集
SREM key member1 [member2] 删除集合一个或多个成员

有序集合操作命令:

  • 有序集合的结构:

指令 含义
ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,score是分数,member为元素
ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合中指定区间内的成员,WITHSCORES可以看score的分数
ZINCRBY key increment member 有序集合中对指定成员的分数加上增量increment
ZREM key member [member...] 移除有序集合中的一个或多个成员

通用命令:

  • Redis的通用命令是不分数据类型的
指令 含义
KEYS pattern 查找所有符合给定模式(pattern)的key
EXISTS key 检查给定key是否存在
TYPE key 返回key所储存的值的类型
DEL key 该命令用于在key存在是删除key

Java操作Redis:

Redis的Java客户端:

  • Jedis
  • Lettuce
  • Spring Data Redis
    • Spring Data Redis是Spring的一部分,对Redis底层开发包进行了高度封装。在Spring项目中,可以使用Spring Dta Redis来简化操作;

Spring Data Redis使用方式:

导入Spring Data Redis的maven坐标:
  • 在pom.xml文件:
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置Redis数据源:
  • 在application.yml文件中:
spring:
	redis:
        host: localhost //对应IP地址
        port: 6379 //端口号
        password: 123456 // 密码
        database: 0 // 选择数据库,一共16个数据库,从0到15,默认为0
编写配置类,创建RedisTemplate对象:
  • 在java文件中:
@Configuration
@Slf4j
public class RedisCofiguration{
	@Bean
	public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
		log.info("开始创建redis模板类...");
		RedisTemplate redisTemplate = new RedisTemplate();
		// 设置key的序列化器,默认为JdkSerializationRedisSerializer
		redisTemplate.setKeySerializer(new StringRedisSerializer());
        // 设置redis的连接工厂对象
		redisTemplate.setConnectionFactory(redisConnectionFactory);
		return redisTemplate;
	}
}

通过RedisTemplate对象操作Redis:

操作字符串类型:
  • 使用依赖注入,注入RedisTemplate对象;

  • 使用redisTemplate对象中的opsForValue方法来操作字符串类型;

  • 常用方法:

    • set(参数1,参数2):设置key的值,参数1是key,参数2是value;
    • get(参数):获取指定key的值,参数为key名;
    • set(参数1,参数2,参数3,参数4):设置指定key的值,并设置key的过期时间,参数1是key,参数2是value,参数3是过期时间,参数4是过期时间单位,使用TimeUnit工具类来设置;
    • setIfAbsent(参数1,参数2):只有在key不存在时设置key的值,参数1是key,参数2是value;
  • 例子:

@Autowired
private RedisTemplate redisTemplate;

redisTemplate.opsForValue().set("city","北京");
String city = (String)redisTemplate.opsForValue().get("city");
redisTemplate.opsForValue().set("code","1234",3,TimeUnit.MINUTES) // 设置过期时间3分钟
redisTemplate.opsForValue().setIfAbsent("lock","1");
操作哈希类型:
  • 使用依赖注入,注入RedisTemplate对象;
  • 使用redisTemplate对象中的opsForHash方法来操作哈希类型;
  • 常用方法:
  • key为哈希表,field为表中的字段名,value为字段对应的值;
    • put(参数1,参数2,参数3):将哈希表key中的字段field的值设为value,参数1为key,参数2为field,参数3为value;
    • get(参数1,参数2):获取存储在哈希表中指定字段的value,参数1为key,参数2为field;
    • keys(参数):获取哈希表中的所有字段,参数为key;
    • values(参数1):获取哈希表中所有值,参数为key;
    • delete(参数1,参数2):删除存储在哈希表中的指定字段,参数1为key,参数2为fieId;
  • 例子:
@Autowired
private RedisTemplate redisTemplate;

redisTemplate.opsForHash().put("100","name","tom");
String name = (String)redisTemplate.opsForHash().get("100","name");
redisTemplate.opsForHash().keys("100");
redisTemplate.opsForHash().values("100");
redisTemplate.opsForHash().delete("100","age");
操作列表类型:
  • 使用依赖注入,注入RedisTemplate对象;
  • 使用redisTemplate对象中的opsForList方法来操作列表类型;
  • 常用方法:
    • leftPushAll(参数1,参数2...):将多个值插入到列表头部,参数1为key(列表名),参数2开始为列表值,从参数2开始一个参数一个参数插入到列表头部;
    • leftPush(参数1,参数2):将一个值插入到列表头部,参数1为key(列表名),参数2为列表值;
    • range(参数1,参数2,参数3):获取列表指定范围内的元素,从零索引开始,最后的元素可以用-1索引,参数1为key(列表名),参数2为起始索引,参数3为结束索引;
    • rightPop(参数):移除并获取列表最后一个元素,参数为key(列表名);
    • size(参数):获取列表长度,参数为key(列表名);
  • 例子:

操作集合类型:
  • 使用依赖注入,注入RedisTemplate对象;
  • 使用redisTemplate对象中的opsForSet方法来操作集合类型;
  • 常用方法:
    • add(参数1,参数2...):向集合添加一个或多个元素,参数1为集合名称,参数2开始为添加的元素;
    • members(参数):返回集合中的所有元素,参数为集合名称;
    • size(参数):获取集合的元素数量,参数为集合名称;
    • intersect(参数1,参数2):返回给定所有集合的交集,参数1和参数2为不同的集合;
    • union(参数1,参数2):返回给定集合的并集,参数1和参数2为不同的集合;
    • remove(参数1,参数2...):删除集合一个或多个元素,参数1为集合名称,参数2开始为删除的元素;
  • 例子:

操作有序集合类型:
  • 使用依赖注入,注入RedisTemplate对象;
  • 使用redisTemplate对象中的opsForZSet方法来操作有序集合类型;
  • 常用方法:
    • add(参数1,参数2,参数3):向有序集合添加一个元素和用于排序的分数,参数1为集合名称,参数2为添加的元素,参数3为元素对应的分数;
    • range(参数1,参数2,参数3):通过索引区间返回有序集合中指定区间内的成员,参数1为集合名称,参数2为起始索引,参数3为结束索引;
    • incrementScore(参数1,参数2,参数3):有序集合中对指定成员的分数加上增量,参数1为集合名称,参数2为增值的元素,参数3为增值的数量;
    • remove(参数1,参数2...):移除有序集合中的一个或多个成员;参数1为集合名称,参数2开始为删除的元素;
  • 例子:

通用操作:
  • 使用依赖注入,注入RedisTemplate对象;
  • 直接使用redisTemplate对象中的方法即可;
  • 常用方法:
    • keys(参数):查找所有符合给定模式(pattern)的key,参数为给定模式,*号为通配符;查出的数据需要遍历;
    • hasKey(参数):检查给定key是否存在,参数为key;
    • delete(参数):在key存在时删除key,参数为key;
  • 例子:

标签:Redis,数据库,redis,列表,参数,key,集合,redisTemplate
From: https://www.cnblogs.com/chj020415/p/18225758

相关文章

  • 1940java swing零售库存管理系统myeclipse开发Mysql数据库CS结构java编程
    一、源码特点   javaswing零售库存管理系统是一套完善的窗体设计系统,对理解SWINGjava编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用C/S模式开发。应用技术:java+mysql开发工具:Myeclipse8.5、jdk。java零售商品库存管理系统二、功能介绍零售库......
  • 1882java密室逃脱管理系统 Myeclipse开发mysql数据库web结构java编程计算机网页项目
    一、源码特点java密室逃脱管理系统是一套完善的web设计系统,对理解JSPjava编程开发语言有帮助采用了java设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用java语言开发。二、功能介绍(1)......
  • redis 缓存 singlefly 查询
    正常缓存没有数据时会先从DB取数据来回填缓存,而如果瞬间查询过多或者缓存利用率过低。singlefly当瞬间过多查询到缓存的空值时就会一起去查询数据库,带给数据库压力变大。这里不能直接用mutex,如果用了拿不到资源的会自旋等待,拿到后继续查DB,用mutex可能会出现整个逻辑处于一直......
  • oracle数据库与oracle实例
    1oracle数据库分类1.1单租户数据库ORACLE12C之前的oracle数据库都是单租户数据库。单租户数据库是独立和完整的数据库,包括ORACLE的元数据和应用的数据。1.2容器数据库(CDB)根数据库只包含oracle的元数据,不存储应用数据。包含了一整套数据文件、参数文件、控制文件、重做日志......
  • 如何将 Langfuse 链接到自有 PostgreSQL 数据库并升级 PostgreSQL 版本
    在本文中,我们将介绍如何将Langfuse应用程序链接到自有的PostgreSQL数据库,并升级PostgreSQL以支持jsonb类型。前提条件运行CentOS7的服务器已安装的PostgreSQL9.2或更低版本需要将Langfuse连接到自有数据库,并升级PostgreSQL以支持jsonb类型1.......
  • 基于springboot的毕业设计成绩管理系统源码数据库
    基于springboot的毕业设计成绩管理系统源码数据库传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装毕业设计成绩管理系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让......
  • [转帖]数据库系列之MySQL数据库中内存使用分析
    在实际系统环境中,MySQL实例的内存使用随着业务的增长缓慢增长,有些时候并没有及时的释放。本文简要介绍下MySQL数据库中和内存相关的配置,以及分析内存的实际使用情况,以进行应急和调优处理。1、MySQL内存结构在MySQL中内存的占用主要由两部分组成:全局共享缓存globalbuffer......
  • Session+Redis,Token+Redis,JWT+Redis,用户身份认证,到底选择哪种更合适?
    1三中方案的比较在选择Session+Redis、Token+Redis、JWT+Redis这三种用户身份认证方案时,我们需要考虑各自的优势、劣势以及应用场景。以下是对这三种方案的详细分析和比较:1.Session+Redis优势:Session登录是一种在Web应用程序中用于跟踪用户状态的机制,通过在服务器端存储......
  • windows安装redis
    1、下载: Releases·microsoftarchive/redis(github.com)   2、解压Redis安装包 3、注册RedisWindows服务进入Redis安装包目录,执行如下的命令,安装服务redis-server.exe--service-installredis.windows.conf--service-nameredisserver1--loglevelverbose......
  • 如何选择国产数据库?
    ORACLE的强大是全方位的,作为甲方DBA,喝喝咖啡,看看报纸,开开会,临听一下ORACLEACE吹水!  作为国企的DBA,CTO.基本上国企都算是传统行业,都是跑ERP系统,进销存系统.客户关系系统.基本上都是B2B业务. 直接面对普通老百姓的互联网业务非常少. 核心业务都是使用ORACLE,少量......