Redis的常用命令与Java整合及高级应用篇(上)

本文介绍了Redis作为非关系型数据库的特性,包括其高速性能、丰富的数据类型和原子性操作。对比了Redis与Memcached的区别,并详细阐述了Redis的常用命令,如字符串、哈希、列表、集合和有序集合的操作。此外,还提及了Redis的事务、流水线、发布订阅和超时时间等高级特性在SpringBoot中的应用。
摘要由CSDN通过智能技术生成

一,redis是什么?

​ 首先数据库分为关系型数据库和非关系型数据库,关系型数据库是采用关系模型来组织数据的数据库,简单来说就是二维表格模型,同时保证事务的一致性。

​ 相反非关系型数据库采用key-value形式进行存储,是一种数据结构化存储方法的集合,具有分布式性质。

​ Redis是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI c语言编写的key-value存储系统(区别于MySQL的二维表格的形式存储。)遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

二,redis的优势

​ 1,性能快:redis读取的速度是110000次/s,写的速度是81000次/s。

​ 2,丰富的数据类型:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)等。

​ 3,原子性:Redis的所有操作都是原子性的,且多个客户端同时访问redis客户端可获得更新后的值。

​ 4,持久化:集群(主从复制,分布式)。

三,redis与Memcached区别(经典面试题)

1 、redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储类型。memcache支持简单的数据类型,String,同时还可以缓存图片,视频。

2 、Redis支持数据的备份,即master-slave模式的数据备份(主从复制)。

3 、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

4、 redis的速度比memcached快很多

5、Memcached是多线程,非阻塞IO复用的网络模型;Redis使用单线程的IO复用模型。

6,数据安全性:memcache挂掉后,数据便消失;redis可以定期保存到磁盘(持久化)。

四,redis常用命令及springboot操作redis

4.1,引入依赖包。

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

4.2,常用命令与代码整合操作。

​ 注意:redis默认使用JDK序列化方式

​ 更多详细命令,请参考Redis中文网:https://www.redis.net.cn/

4.3,字符串操作类型。

/**
 * String - 字符串类型的操作方式
 * redisTemplate.opsForValue()
*/
    @Test
    public void stringType(){
        //  改为String序列化方式
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new StringRedisSerializer());

        //  redis命令:set key value
        redisTemplate.opsForValue().set("age", "19");

        // redis命令:get key
        String age = (String) redisTemplate.opsForValue().get("age");
        System.out.println("-->" + age);

        // redis命令:mset key value key value ...
        Map<String, Object> map = new HashMap<>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        redisTemplate.opsForValue().multiSet(map);

        // redis命令:mget key key key...
        List<String> keys = new ArrayList<>();
        keys.add("key1");
        keys.add("key2");
        keys.add("key3");
        List values = redisTemplate.opsForValue().multiGet(keys);
        System.out.println("mget -->" + values);

        // redis命令:del key
        Boolean boo = redisTemplate.delete("key1");

        // redis命令:strlen key - 可能会因为序列化的原因造成长度不准
        Long resultLong = redisTemplate.opsForValue().size("age");
        System.out.println("strlen --> " + resultLong);

        // redis命令:getset key value
        String oldValue = (String) redisTemplate.opsForValue().getAndSet("age", "25");
        System.out.println("getset --> " + 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值