redis的安装与连接 Java的基本操作

5 篇文章 0 订阅
3 篇文章 0 订阅

一、安装Redis

下载,上传,解压tar包

http://download.redis.io/releases/redis-5.0.0.tar.gz

1.安装C语言编译环境

yum install -y gcc-c++

2.编译:进入Redis解压目录(一般放/opt目录下)执行make命令

cd /opt/redis-5.0.0

make

3.安装:

make install

4.创建redis专属目录

mkdir /usr/local/redis

5.将redis.conf复制到专属目录

cp /opt/redis-5.0.0/redis.conf /usr/local/redis

6.修改redis.conf(开启守护进程)

vim /usr/local/redis/redis.conf

①开启守护进程

  37 # By default Redis does not run as a daemon. Use 'yes' if you need it.

  38 # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.

  39 daemonize yes

②设置密码

      504 # requirepass foobared

      505 requirepass 123456

可选:(指定目录记录日志信息 logfile "/var/log/redis.log")

7.启动Redis服务端

/usr/local/bin/redis-server /usr/local/redis/redis.conf

8.客户端登录

/usr/local/bin/redis-cli -h 192.168.88.129 -p 6379 -a 123456

二、java连接操作

添加pom依赖

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

常用的连接工具是Jedis,我这里用的是RedisTemplate,都差不多

首先是配置文件application.proproperties(用的是springboot)

# Redis数据库索引(默认为0),如果设置为1,那么存入的key-value都存放在select 1中
spring.redis.database=0
#Redis服务器地址
spring.redis.host=192.168.88.129
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码
spring.redis.password=123456
# 连接超时时间(毫秒)
spring.redis.timeout=2000
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
#连接池最大连接数(使用负值表示没有限制
spring.redis.jedis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1

直接上Redis的配置类(可以结合SpringCache用),这里以操作hash数据结构(redis5新增了流数据类型Stream,现在是六大数据类型了)为例,其他的就不说了

@EnableCaching
@Configuration
public class RedisConfig extends CachingConfigurerSupport {

    /**
     * 缓存管理器 使用cache注解管理redis缓存
     * @param connectionFactory
     * @return
     */
    @Bean
    public CacheManager cacheManager(RedisConnectionFactory connectionFactory){

        //初始化一个RedisCacheWriter
        RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory);

        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);

        //解决查询缓存转换异常的问题
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);

        RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer);

        RedisCacheConfiguration defaultCacheConfig=RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(12)).serializeValuesWith(pair);

        RedisCacheManager redisCacheManager = new RedisCacheManager(redisCacheWriter, defaultCacheConfig);

        //RedisCacheManager cacheManager = RedisCacheManager.create(connectionFactory);
        return redisCacheManager;
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {

        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();

        // 使用Jackson2JsonRedisSerializer替换默认序列化
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);

        // 设置value的序列化规则和 key的序列化规则
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(stringRedisSerializer);
        redisTemplate.setHashKeySerializer(stringRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);

        redisTemplate.setConnectionFactory(factory);
        redisTemplate.afterPropertiesSet();

        return redisTemplate;
    }

    /**
     * 对hash类型的数据操作
     *
     * @param redisTemplate
     * @return
     */
    @Bean
    public HashOperations<String, Object, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {
        return redisTemplate.opsForHash();
    }
}

测试类

@Test
    public void testRedisHash(){
        Map<String, Object> map = new HashMap<>();
        map.put("mapkey","mapvalue");
        //单个增加
        hashOperations.put("hashkey1","hashkey1k","hashkey1v");
        //添加map
        hashOperations.putAll("hashkey2",map);

        System.err.println(hashOperations.get("hashkey1","hashkey1k"));

        Map<Object, Object> hashkey2 = hashOperations.entries("hashkey2");
        for (Map.Entry<Object,Object> entry: hashkey2.entrySet()) {
            System.err.println("Key="+entry.getKey()+", Value="+entry.getValue());
        }
    }

输出

查看redis数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值