首页 > 数据库 >java 连接 redis

java 连接 redis

时间:2022-08-27 12:57:04浏览次数:59  
标签:username java redis System jedis println 连接 out

Jedis

导入对应的依赖

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

    <!-- fastjson-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.79</version>
    </dependency>
</dependencies>

连接数据库

记得在本地打开redis

//        1. new Jedis
Jedis jedis = new Jedis("127.0.0.1",6379);

System.out.println(jedis.ping());

测试

System.out.println("添加一个值username:"+jedis.set("username", "huisnaya"));
System.out.println("添加一个值password:"+jedis.set("password", "123456"));
System.out.println("查询一个值username:"+jedis.get("username"));
System.out.println("查询一个值password:"+jedis.get("password"));
System.out.println("查询所有的键:"+jedis.keys("*"));

System.out.println("清空当前数据库;" + jedis.flushDB());

/**
结果:
    添加一个值username:OK
    添加一个值password:OK
    查询一个值username:huisnaya
    查询一个值password:123456
    查询所有的键:[password, username]
    清空当前数据库;OK
**/

事务成功

public static void main(String[] args) {
    Jedis jedis = new Jedis("127.0.0.1", 6379);

    Transaction multi = jedis.multi(); //开启事务

    try {
        multi.set("user1","hahah");//指令入队
        multi.set("user2","xixixi");
        multi.exec();//执行事务
    }catch (Exception e){
        multi.discard();    //放弃事务
        e.printStackTrace();
    }finally {
        System.out.println(jedis.get("user1"));
        System.out.println(jedis.get("user2"));
        jedis.close();//关闭连接
    }

}

结果:
    hahah
    xixixi

事务失败

public static void main(String[] args) {
    Jedis jedis = new Jedis("127.0.0.1", 6379);
    jedis.flushDB();	//清空上一次的值
    Transaction multi = jedis.multi(); //开启事务

    try {
        multi.set("user1","hahah");//指令入队
        multi.set("user2","xixixi");
        int i = 1/0;
        multi.exec();//执行事务
    }catch (Exception e){
        multi.discard();    //放弃事务
        e.printStackTrace();
    }finally {
        System.out.println(jedis.get("user1"));
        System.out.println(jedis.get("user2"));
        jedis.close();//关闭连接
    }

}

结果:
	null
    null

java远程连接reids

第一步开启6379这个端口号,防火墙要开启

firewall-cmd --zone=public --add-port=8080/tcp --permanent	开启8080端口防火墙

systemctl restart firewalld.service					刷新防火墙

firewall-cmd --list-ports					查看防火墙的端口

第二步修改配置文件

注意:用redis-cli连接时要登录面

[root@shuisanya bin]# redis-cli
127.0.0.1:6379> auth 123456
OK

java测试

public class Test {
    public static void main(String[] args) {
//        1. new Jedis
        Jedis jedis = new Jedis("47.96.26.127",6379);
        jedis.auth("123456");
        System.out.println("添加一个值username:"+jedis.set("username", "huisnaya"));
        System.out.println("添加一个值password:"+jedis.set("password", "123456"));
        System.out.println("查询一个值username:"+jedis.get("username"));
        System.out.println("查询一个值password:"+jedis.get("password"));
        System.out.println("查询所有的键:"+jedis.keys("*"));

//        System.out.println("清空当前数据库;" + jedis.flushDB());
        jedis.close();
    }
}

这个时候你在redis-cli中查看就有了

127.0.0.1:6379> keys *
1) "username"
2) "password"
127.0.0.1:6379> get username
"huisnaya"
127.0.0.1:6379> 

SpringBoot 整合 redis

导入依赖

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

编写配置文件

spring.redis.host=127.0.0.1
spring.redis.port=6379

测试

@Test
void contextLoads() {
    redisTemplate.opsForValue().set("haha","哈哈哈");
    System.out.println(redisTemplate.opsForValue().get("haha"));
    System.out.println(redisTemplate.keys("*"));
}

编写一个配置类 来序列化操作

package com.mhy.springredis.config;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
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.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;


@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);

        //        配置具体的序列化方式
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
        StringRedisSerializer redisSerializer = new StringRedisSerializer();

        template.setKeySerializer(redisSerializer);
        template.setHashKeySerializer(redisSerializer);
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        return template;
    }
}

标签:username,java,redis,System,jedis,println,连接,out
From: https://www.cnblogs.com/shuisanya/p/16630363.html

相关文章

  • Java10-接口,多态
    第一章接口1.1概述接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK7......
  • Mysql----外连接,约束
    《外连接》这个外连接其实就是解决多张表笛卡尔集的问题:比如:    我有如上两张表,我想要显示出全部学生的成绩,没有成绩的同学默认成绩为NULL按照以前的方法,要将......
  • java自定义stream
    一、流程1//自定义集合,继承ArrayList,与ArrayList没啥区别SelfList<Apple>appleList=newSelfList<>();importjava.util.ArrayList;importjav......
  • Java调用Windows系统命令CMD
    Java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令。cmd/cdir是执行完dir命令后关闭命令窗口。 cmd/kdir是执行完dir命令后不关闭命令窗口。 ......
  • win10环境安装vs2015的问题:缺少JavaScript_ProjectSystem.msi和JavaScript_LanguageSe
    最近有同事在win10下安装vs2015总是报错,安装中途报缺少文件JavaScript_ProjectSystem.msi和JavaScript_LanguageService.msi。想想看微软发布的产品应该不至于丢三落四,缺......
  • D11(java基础)
    D11(java基础)流概念:内存与存储设备之间传输数据的通道。流的分类按方向:输入流:将存储设备中的内容读入到内存中。输出流:将内存中的内容写入到存储设备中。......
  • JavaSE-Day02-Java方法
    Java方法什么是方法System.out.println() 类.对象.方法()Java方法是语句的集合,他们在一起执行一个功能方法是解决一类问题的步骤的有序集合方法包含于类或对象之中......
  • 【FAQ】【JAVA UI】HarmonyOS 如何获取uid和pid
    ​ 【问题描述】鸿蒙中怎么样可以获取Uid和Pid 【解决方案】try{BundleInfobundleInfo=getContext().getBundleManager().getBundleInfo(getBund......
  • Redis
    官网:http://redis.cn/Windows版下载:https://github.com/microsoftarchive/redis/releasesLinux版下载:https://download.redis.io/releases/  Redis简介关系型数据......
  • 一台服务器最大并发 tcp 连接数多少?65535?
    转载:https://www.jianshu.com/p/0154dff4be77首先,问题中描述的65535个连接指的是客户端连接数的限制。在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经......