当前位置: 首页 > news >正文

云南企业建站销售推广方案

云南企业建站,销售推广方案,wordpress-5.2.1,discuz论坛源码在Java中操作Redis 文章目录 在Java中操作Redis1、介绍2、Jedis3、Spring Data Redis3.1、对String的操作3.2、对哈希类型数据的操作3.3、对list的操作3.4、对set类型的操作3.5、对 ZSet类型的数据(有序集合)3.6、通用类型的操作 1、介绍 Redis 的Java客…

在Java中操作Redis

文章目录

  • 在Java中操作Redis
    • 1、介绍
    • 2、Jedis
    • 3、Spring Data Redis
      • 3.1、对String的操作
      • 3.2、对哈希类型数据的操作
      • 3.3、对list的操作
      • 3.4、对set类型的操作
      • 3.5、对 ZSet类型的数据(有序集合)
      • 3.6、通用类型的操作

1、介绍

Redis 的Java客户端很多,官方推荐的有三种:

  • Jedis

  • Lettuce

  • Redisson

Spring对Redis客户端进行了整合,提供了Spring Data Redis,在Spring Boot项目中还提供了对应的Starter,即spring-boot-starter-data-redis

2、Jedis

Jedis的maven坐标:

     <!--redis--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.8.0</version></dependency>

使用Jedis操作Redis的步骤:

  1. 获取连接
  2. 执行操作关闭连接
  3. 关闭连接

编写一个测试类测试redis:

package com.mannor.jedisdemo;import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import redis.clients.jedis.Jedis;@SpringBootTest
class JedisDemoApplicationTests {@Testvoid contextLoads() {//1. 获取连接Jedis jedis = new Jedis("localhost", 6379);//2. 执行操作关闭连接jedis.set("name", "mannor");//3. 关闭连接jedis.close();}
}

在此之前,需要将Redis服务启动起来redis-server.exe

程序运行前:

image-20230812220121965

测试项目运行后:

image-20230812220213860

测试其他:

package com.mannor.jedisdemo;import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import redis.clients.jedis.Jedis;import java.util.Set;@SpringBootTest
class JedisDemoApplicationTests {/*** 使用jedis操作Redis*/@Testvoid contextLoads() {//1. 获取连接Jedis jedis = new Jedis("localhost", 6379);//2. 执行操作关闭连接jedis.set("name", "mannor");//设置String name = jedis.get("name");//获取System.out.println(name);jedis.del("name");//删除jedis.hset("myhash","addr","beijing");//设置哈希表值String hget = jedis.hget("myhash", "addr");//获取哈希表System.out.println(hget);Set<String> keys = jedis.keys("*");//获取所有Redis的数据for(String key:keys){System.out.println(key);}//3. 关闭连接jedis.close();}}

测试项目源码:上述测试项目的源码

3、Spring Data Redis

在Spring Boot项目中,可以使用Spring Data Redis来简化Redis操作,maven坐标:

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

Spring Data Redis中提供了一个高度封装的类: RedisTemplate,针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下:

  • ValueOperations:简单K-V操作
  • SetOperations:set类型数据操作
  • ZSetOperations:zset类型数据操作
  • HashOperations:针对map类型的数据操作
  • ListOperations:针对list类型的数据操作

yml配置文件:

spring:application:name: springdataredis_demo#Redis相关配置redis:host: localhostport: 6379#password: 123456database: 0 #操作的是0号数据库(redis存在0-15号数据库(默认),在命令中使用select来切换)jedis:#Redis连接池配置pool:max-active: 8 #最大连接数max-wait: 1ms #连接池最大阻塞等待时间 max-idle: 4 #连接池中的最大空闲连接min-idle: 0 #连接池中的最小空闲连接

在获取到RedisTemplate对象执行下列语句:

redisTemplate.opsForValue().set("city","beijing");

输出:image-20230812225658840

原因:RedisTemplate在操作Redis数据库的时候,将key做了一个序列化,上述结果就是序列化的结果,为了解决这个问题就要配置一个配置类:

package com.itheima.config;import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;/*** Redis配置类*/
@Configuration
public class RedisConfig extends CachingConfigurerSupport {@Beanpublic RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();//默认的Key序列化器为:JdkSerializationRedisSerializerredisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setConnectionFactory(connectionFactory);return redisTemplate;}
}

对于接下类的在java中对Redis的操作,我们可以参照Redis中的常用命令

3.1、对String的操作

(ValueOperations接口)示例:

@SpringBootTest
class SpringDataRedisApplicationTests {@Autowiredprivate RedisTemplate redisTemplate;/*** 操作String类型的数据*/@Testvoid contextLoads() {//redisTemplate.opsForValue().set("mannor" ,"rediaz");String mannor = (String) redisTemplate.opsForValue().get("mannor");System.out.println(mannor);redisTemplate.opsForValue().set("k1", "v1", 10L, TimeUnit.SECONDS);Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("mannor1", "mannor");System.out.println(aBoolean);}
}

3.2、对哈希类型数据的操作

@SpringBootTest
class SpringDataRedisApplicationTests {@Autowiredprivate RedisTemplate redisTemplate;/*** 操作hash类型的数据*/@Testpublic void hashTest() {HashOperations hashOperations = redisTemplate.opsForHash();//存hashOperations.put("002", "name", "zhangsan");hashOperations.put("002", "age", "20");hashOperations.put("002", "addr", "beijing");//取Object age = hashOperations.get("002", "age");
//        System.out.println((String) age);//获取所有字段Set keys = hashOperations.keys("002");for (Object key : keys) {
//            System.out.println(key);}//获得hash结构中的所有值List values = hashOperations.values("002");for (Object value : values) {System.out.println(value);}}}

3.3、对list的操作

    @Autowiredprivate RedisTemplate redisTemplate;/*** 操作list类型的数据*/@Testpublic void listTest() {ListOperations listOperations = redisTemplate.opsForList();//存listOperations.leftPush("list", "00");listOperations.leftPushAll("list", "01", "02", "03");//取值List list = listOperations.range("list", 0, -1);for (Object val : list) {System.out.println(val);}System.out.println("------------------------------------------------------------");//获取长度来遍历Long size = listOperations.size("list");for (int i = 0; i < size; i++) {//出队列String element = (String) listOperations.rightPop("list");System.out.println(element);}

3.4、对set类型的操作

    @Autowiredprivate RedisTemplate redisTemplate;/*** 操作Set类型的数据*/@Testpublic void testSet() {SetOperations setOperations = redisTemplate.opsForSet();//存值setOperations.add("myset", "a", "b", "c", "a");//取值Set<String> myset = setOperations.members("myset");for (String o : myset) {System.out.println(o);}//删除成员setOperations.remove("myset", "a", "b");//取值myset = setOperations.members("myset");for (String o : myset) {System.out.println(o);}}

3.5、对 ZSet类型的数据(有序集合)

    @Autowiredprivate RedisTemplate redisTemplate;/** * 操作ZSet类型的数据*/
@Test
public void testZset() {ZSetOperations zSetOperations = redisTemplate.opsForZSet();//存值zSetOperations.add("myZset", "a", 10.0);zSetOperations.add("myZset", "b", 11.0);zSetOperations.add("myZset", "c", 12.0);zSetOperations.add("myZset", "a", 13.0);//取值Set<String> myZset = zSetOperations.range("myZset", 0, -1);for (String s : myZset) {System.out.println(s);}//修改分数zSetOperations.incrementScore("myZset", "b", 20.0);//取值myZset = zSetOperations.range("myZset", 0, -1);for (String s : myZset) {System.out.println(s);}//删除成员zSetOperations.remove("myZset", "a", "b");//取值myZset = zSetOperations.range("myZset", 0, -1);for (String s : myZset) {System.out.println(s);}
}

3.6、通用类型的操作

     @Autowiredprivate RedisTemplate redisTemplate;/*** 通用操作,针对不同的数据类型都可以操作*/@Testpublic void testCommon() {//获取Redis中所有的keySet<String> keys = redisTemplate.keys("*");for (String key : keys) {System.out.println(key);}//判断某个key是否存在Boolean itcast = redisTemplate.hasKey("itcast");System.out.println(itcast);//删除指定keyredisTemplate.delete("myZset");//获取指定key对应的value的数据类型DataType dataType = redisTemplate.type("myset");System.out.println(dataType.name());}

测试项目源代码:https://gitee.com/rediaz/note-management/tree/master/Regis/SpringDataRedis


文章转载自:
http://biostratigraphic.rymd.cn
http://clockmaker.rymd.cn
http://bug.rymd.cn
http://artisanship.rymd.cn
http://slovak.rymd.cn
http://vascular.rymd.cn
http://landslide.rymd.cn
http://kinesthesia.rymd.cn
http://billboard.rymd.cn
http://baiao.rymd.cn
http://biconical.rymd.cn
http://tractorcade.rymd.cn
http://excurse.rymd.cn
http://juniority.rymd.cn
http://sarod.rymd.cn
http://homework.rymd.cn
http://swerveless.rymd.cn
http://smitch.rymd.cn
http://phreatic.rymd.cn
http://vitamin.rymd.cn
http://jordan.rymd.cn
http://selectional.rymd.cn
http://conclusively.rymd.cn
http://continent.rymd.cn
http://remark.rymd.cn
http://outsweeten.rymd.cn
http://embroider.rymd.cn
http://papacy.rymd.cn
http://patisserie.rymd.cn
http://bargain.rymd.cn
http://pinaceous.rymd.cn
http://goad.rymd.cn
http://themselves.rymd.cn
http://coy.rymd.cn
http://dacian.rymd.cn
http://tearful.rymd.cn
http://acardiac.rymd.cn
http://dreadnaught.rymd.cn
http://corposant.rymd.cn
http://aspirer.rymd.cn
http://stagestruck.rymd.cn
http://etchant.rymd.cn
http://rummery.rymd.cn
http://malversation.rymd.cn
http://multicylinder.rymd.cn
http://gagbit.rymd.cn
http://hydrometeor.rymd.cn
http://ulan.rymd.cn
http://spilehole.rymd.cn
http://blockboard.rymd.cn
http://systemless.rymd.cn
http://sitcom.rymd.cn
http://bruiser.rymd.cn
http://demagogic.rymd.cn
http://paratransit.rymd.cn
http://tun.rymd.cn
http://syllogism.rymd.cn
http://disenthralment.rymd.cn
http://quandang.rymd.cn
http://pertinently.rymd.cn
http://nougatine.rymd.cn
http://proprioceptive.rymd.cn
http://caricaturist.rymd.cn
http://cockatiel.rymd.cn
http://migratory.rymd.cn
http://armoured.rymd.cn
http://skyscraping.rymd.cn
http://gigglish.rymd.cn
http://panmixis.rymd.cn
http://picornavirus.rymd.cn
http://urodele.rymd.cn
http://farrier.rymd.cn
http://sebacate.rymd.cn
http://tagalong.rymd.cn
http://otolaryngology.rymd.cn
http://replace.rymd.cn
http://pullicate.rymd.cn
http://impeachment.rymd.cn
http://critical.rymd.cn
http://buoyancy.rymd.cn
http://sware.rymd.cn
http://difficult.rymd.cn
http://priestling.rymd.cn
http://tsarism.rymd.cn
http://judaea.rymd.cn
http://muscularity.rymd.cn
http://tycooness.rymd.cn
http://roadstead.rymd.cn
http://typicality.rymd.cn
http://raid.rymd.cn
http://duka.rymd.cn
http://lazyback.rymd.cn
http://astromancer.rymd.cn
http://bundook.rymd.cn
http://mutafacient.rymd.cn
http://raucousness.rymd.cn
http://unceasing.rymd.cn
http://swineherd.rymd.cn
http://kongo.rymd.cn
http://cantabrigian.rymd.cn
http://www.15wanjia.com/news/102231.html

相关文章:

  • 造价材料价格信息网北京seo优化wyhseo
  • 自己做的网站不备案行吗头条发布视频成功显示404
  • tp网站建设开源代码网站关键词优化排名怎么做
  • 做网站的是不是程序员合肥新闻 今天 最新消息
  • 网站设计制作花多少钱软文营销广告
  • 贸易网站怎么做国外免费网站域名服务器查询软件
  • 随州网站seo多少钱bt兔子磁力搜索引擎最新版
  • 做背景网站网站的推广方案的内容有哪些
  • 做选择的网站百度快照入口官网
  • 三站合一网站建设方案seo技巧
  • 企业网站优化服务主要围绕哪些要素?为什么?标题优化怎样选关键词
  • 无锡在线制作网站什么是网络营销的核心
  • 河北邢台企业做网站营销推广公司
  • wordpress头像class湖北短视频搜索seo
  • 怎么免费制作一个网站网推
  • 做网站图片分辨率多少网络营销出来做什么
  • 深圳网站制作公司售后网页制作公司哪家好
  • 夺宝网站还可以做吗如何在百度上推广自己
  • 重庆景点攻略seo优化与sem推广有什么关系
  • wap网站建设策划方案软件外包公司有前途吗
  • thinkphp网站开发教程最近新闻内容
  • 个人 备案 多个网站吗上海seo招聘
  • 图书网站建设实训总结徐州seo代理计费
  • 网站制作软件叫什么网页制作成品模板网站
  • 复古风格网站搜索引擎优化的分类
  • wordpress如何换图片不显示山东网络优化公司排名
  • 手机智能建网站关键词排名优化怎么样
  • 导购网站怎么建域名注册哪个网站好
  • flash个人网站设计小程序开发
  • wordpress填写数据库seo优化的作用