Redis详细使用及结合SpringBoot
今天咱来聊一下Redis五种数据类型的详细用法以及在代码中如何使用。废话不多说,开始!
Redis五种数据类型:
- string:字符串对象
- list:列表对象
- hash:散列
- set:集合
- zset:有序集合
接下来一一进行操作(命令行操作,由于很多,就不一一截图了):
一、统一操作(五种数据类型都拥有,针对key)
我给定一个key:k1
//获取所有key
keys *
//删除k1
DEL k1
//检查给定的k1是否存在
EXISTS k1
//给k1设置1秒的过期时间,1秒过后,k1被删除
EXPIRE k1
//给k1设置过期时间为unix时间戳,也就是北京时间2019-11-29 22:22:09
EXPIREAT k1
//查看k1还有多长时间过期,单位为毫秒
PTTL k1
//查看k1还有多长时间过期,单位为秒
TTL k1
//取消k1的过期时间设置
PERSIST k1
//修改key的名称,将k1修改为k2
RENAME k1 k2
//查看k1是什么数据类型的
TYPE K1
二、string(字符串对象)
//设置k1的值为value1
set k1 value1
//获取k1的值
get k1
//先获取k1的值,然后再将k1的值设为k1_value
GetSet k1 k1_value
//同时设置多个key的值,k1的值为v1,k2的值为v2
mset k1 v1 k2 v2
//同时获取k1,k2的值
mget k1 k2
//将k1的值加1
incr k1
//将k1的值加上3
incrby k1
//将k1的值减1
decr k1
//将k1的值减3
decrby k1
//在k1的值后面添加相应的字符串
append k1 value
三、list(列表对象)
从左到右索引为0,1,2...
//将v1,v2,v3添加到列表k1
LPUSH k1 v1 v2 v3
//获取列表k1中索引为1的值,索引从0算起
LINDEX k1
//获取列表k1的元素个数
LLEN k1
//移除并获取k1的第一个元素
LPOP k1
//获取索引0~2的元素,当2改成-1,则获取所有元素
LRANGE k1
//设置索引为1的元素值为v4
LSET k1 v4
//移除并获取列表k1的最后一个元素
RPOP k1
//在列表k1尾部添加v5和v6两个元素
RPUSH k1 v5 v6
四、hash(散列对象)
散列对象相当于字典(map)
//给h_k1添加一个键为k1,值为v1的entry
HSET h_k1 k1 v1
//获取h_k1中k1的值
HGET h_k1 k1
//删除h_k1中的k1,可以删除多个,key之间空格隔开
HDEL h_k1 k1
//获取h_k1中k1的值
HGET h_k1 k1
//给h_k1添加<k2,v2>,<k3,v3>的entry
HMSET h_k1 k2 v2 k3 v3
//同时获取h_k1中k2,k3的值
HMGET h_k1 k2 k3
//获取h_k1中的所有键对值
HGETALL h_k1
//获取h_k1中的键对值数量
HLEN h_k1
//获取h_k1中所有的key
HKEYS h_k1
//获取h_k1中所有的value
HVALS h_k1
//查看h_k1中key为k2的entry是否存在
HEXISTS h_k1 k2
五、set(集合)
集合中的元素是唯一的,类似于java中的set集合
//往s_k1集合中添加v1,v2,v3,v4
SADD s_k1 v1 v2 v3 v4
//获取s_k1集合成员数量
SCARD s_k
//获取s_k1中的所有成员
SMEMBERS s_k1
//移除并返回s_k1中随机一个数
SPOP s_k1
//给s_k1,s_k2做交集
SINTER s_k1 s_k2
//给s_k1,s_k2做交集并且将结果存储到s_k3
SINTERSTORE s_k3 s_k1 s_k2
//给s_k1,s_k2做并集
SUNION s_k1 s_k2
//给s_k1,s_k2做并集并且将结果存储到s_k4
SUNIONSTORE s_k4 s_k1 s_k2
六、zset(有序集合)
//给z_k1添加三个元素v1、v2、v3,分值分别是1、2、3
ZADD z_k1 v1 v2 v3
//获取z_k1的元素个数
ZCARD z_k1
//获取分值为1~3的成员数
ZCOUNT z_k1
//获取索引 0~2的成员,2改成-1为获取所有成员
ZRANGE z_k1
//获取索引 0~2的成员以及其分值
ZRANGE z_k1 withscores
//获取分值为0~2的成员,后面也可以带上withscores
ZRANGEBYSCORE z_k1
//获取v2的索引
ZRANK z_k1 v2
//获取z_k1中v1的分值
ZSCORE z_k1 v1
//对z_k1和z_k2做交集,中间的2表示对两个有序集合做交集,并将结果存在z_k3
ZINTERSTORE z_k3 z_k1 z_k2
//对z_k1和z_k2做并集,中间的2表示对两个有序集合做并集,并将结果存在z_k4
ZUNIONSTORE z_k4 z_k1 z_k2
命令行的常规操作如上,接下来看一下代码(分为普通maven项目和 spring boot项目)如何操作。
一、普通maven项目
(1)操作单机redis(一般使用jedis连接,需要导入jedis的jar包)
连接方式:
连接之后就可以直接用返回的jedis操作api,相应的IDEA都会有提示,这里就不在赘述。
(2)连接集群方式
连接无密码集群:
连接有密码集群:
二、springboot上操作redis
首先得在pom文件中添加依赖:
(1)单机版
spring-data-redis提供了一种代码配置(需要利用@Configuration注解创建一个配置类)的方式可获取RedisTemplate
配置之后就可用直接用@Autowired注解注入进行使用。
也可通过配置文件(application.properties)配置redis信息进行连接
通过配置文件可以直接在代码中通过注解注入的方式使用
@Autowired
StringRedisTemplate stringRedisTemplate;
//自定义初始化之后执行的方法
@PostConstruct
public void run() throws Exception {
ValueOperations<String, String> stringStringValueOperations = redisTemplate.opsForValue();
stringStringValueOperations.set("k1","v1");
System.out.println(stringStringValueOperations.get("k1"));
}
(2)集群连接方式
配置文件
#数据库
spring.redis.database=
spring.redis.password=
#设置为0可以让master挂机后,直接切换到slave
spring.redis.cluster.max-redirects=
spring.redis.cluster.nodes=192.168.197.100:,192.168.197.110:,192.168.197.120:,192.168.197.100:,192.168.197.110:,192.168.197.120:
spring.redis.jedis.pool.max-wait=
spring.redis.jedis.pool.max-active=
spring.redis.jedis.pool.max-idle=
spring.redis.jedis.pool.min-idle=
配置类:
package com.liusy.zuul.com;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.JedisPoolConfig;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Configuration
public class redisConfig {
//获取配置文件里的值
@Value("${spring.redis.password}")
String password;
@Value("${spring.redis.cluster.nodes}")
String nodes;
@Value("${spring.redis.cluster.max-redirects}")
String redirects;
@Value("${spring.redis.jedis.pool.max-wait}")
String maxWritTime;
@Value("${spring.redis.jedis.pool.max-active}")
String maxActive;
@Value("${spring.redis.jedis.pool.max-idle}")
String maxIdle;
@Value("${spring.redis.jedis.pool.min-idle}")
String minIdle;
@Bean
public RedisTemplate redisTemplate() {
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
redisTemplate.setConnectionFactory(getConnectionFactory());
return redisTemplate;
}
@Bean
public RedisConnectionFactory getConnectionFactory() {
List<String> nodelist = new ArrayList<>();
nodelist = Arrays.asList(nodes.split(","));
RedisClusterConfiguration config = new RedisClusterConfiguration(nodelist);
config.setPassword(RedisPassword.of(password));
config.setMaxRedirects(Integer.parseInt(redirects));
JedisConnectionFactory connectionFactory = new JedisConnectionFactory(config);
connectionFactory.afterPropertiesSet();
return connectionFactory;
}
@Bean
public JedisPoolConfig jedisPoolConfig(){
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(Integer.valueOf(maxActive));
jedisPoolConfig.setMaxWaitMillis(Integer.valueOf(maxWritTime));
jedisPoolConfig.setMaxIdle(Integer.valueOf(maxIdle));
jedisPoolConfig.setMinIdle(Integer.valueOf(minIdle));
// 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
jedisPoolConfig.setTestOnBorrow(true);
// 在空闲时检查有效性, 默认false
jedisPoolConfig.setTestWhileIdle(false);
return jedisPoolConfig;
}
}
springboot启动之后直接用@Autowired注解注入RedisTemplate使用就可以了
以上就是redis的使用,全文比较粗糙,展开就会很长。下篇将聊一下Redis底层数据结构的实现。
=======================================================
我是Liusy,一个喜欢健身的程序员。
欢迎关注公众号【Liusy01】,一起交流Java技术及健身,获取更多干货。
Redis详细使用及结合SpringBoot的更多相关文章
- redis详细配置文件
redis 单机版自己指定配置 #修改为守护模式 daemonize yes #设置进程锁文件 pidfile /usr/local/redis/redis.pid #端口 port 6379 #客户 ...
- [原]Redis详细配置介绍
Redis详细配置介绍 # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 ...
- Redis详细用法
Redis详细用法 1.redis启动命令 本机Redis 安装路径是在usr/local/redis 目录下 启动命令: ./redis-server redis.conf(启动时指定配置文件) 测 ...
- Windows 64位下安装Redis详细教程
方法/步骤 在D盘新建文件夹[redis],右键解压Redis ZIP包,把所有文件解压到redis文件夹中.(其他盘符也可以滴^_^) 文件介绍: redis-benchmark.exe ...
- PHP 操作redis 详细讲解转的
http://www.cnblogs.com/jackluo/p/3412670.html phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有 ...
- Redis详细讲解(Redis原理,Redis安装,Redis配置,Redis使用,Redis命令)
一.Redis介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发 ...
- PHP操作redis详细讲解(转)
PHP中redis的使用 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和z ...
- PHP 操作redis 详细讲解 转的 http://www.cnblogs.com/jackluo/p/3412670.html
phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github. ...
- CentOS安装Redis详细教程
构建 Redis redis 目前没有官方 RPM 安装包,我们需要从源代码编译,而为了要编译就需要安装 Make 和 GCC. 如果没有安装过 GCC 和 Make,那么就使用 yum 安装. yu ...
随机推荐
- MyBatis学习-使用Druid连接池将Maybatis整合到spring
目录 前言 什么是Druid连接池 Druid可以做什么? 导入库包 连接oracle 连接mysql 导入mybatis 导入druid 导入spring-jdbc包 导入spring包 导入spr ...
- 搭建vue开发环境的步骤,六步完成
搭建vue开发环境的步骤,其实也挺简单的,之前这环境的配置也困扰着我一:在搭建vue的开发环境之前,一定一定要先下载node.js,vue的运行是要依赖于node的npm的管理工具来实现,下载地址:h ...
- 这都Java15了,Java7特性还没整明白?
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- Unix I/O
Unix I/O 打开文件 一个应用程序通过要求内核打开相应的文件,来宣告它想要访问一个I/O设备.内核返回一个小的非负整数,叫做描述符,它在后续对此文件的所有操作中标识这个文件.内核记录有关这个打开 ...
- Javascript模块化编程(二):AMD规范 (转)
原文作者: 阮一峰 日期: 2012年10月30日 这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块. (接上文) 七.模块的规范 先想一想,为什么模块很重要? ...
- java基础-01:dos命令
进入cmd方式 win + r 输入 cmd 随便进入一个文件夹 在导航栏输入cmd,回车即进入命令行 命令 盘符切换:直接输入 E: ,回车即可 查看文件夹下所有目录:dir 切换目录: cd 跨盘 ...
- “DNAT+云链接+CDN”加速方案,助力出海企业落地生长
摘要:“DNAT+云链接+CDN”加速方案,真正释放技术红利,真诚助力企业出海. 随着国内互联网行业的人口红利逐渐消失,本土互联网市场竞争不断加剧,加之国家多项“走出去”政策的推动,越来越多的中国互联 ...
- SEO诊断方案以及执行方案
http://www.wocaoseo.com/thread-127-1-1.html 今天和大家一起讨论一下SEO诊断方案以及SEO执行方案要怎么写,主要从哪些方面进行呢,做SEO的朋友们一直在探讨 ...
- idea如何安装插件
原文地址:https://jingyan.baidu.com/article/215817f742a61c1eda142329.html 1.首先打开idea界面,然后 按住快捷键ctrl+shift ...
- Apache Pulsar 在 BIGO 的性能调优实战(上)
背景 在人工智能技术的支持下,BIGO 基于视频的产品和服务受到广泛欢迎,在 150 多个国家/地区拥有用户,其中包括 Bigo Live(直播)和 Likee(短视频).Bigo Live 在 15 ...