Redis的基本操作

这篇具有很好参考价值的文章主要介绍了Redis的基本操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.Redis简介

Redis是一款基于内存的key-value结构数据库,它的主要优点有以下几点:

  • 基于内存存储,读写性能高
  • 适合存储热点数据
  • 企业应用广泛

其结构为:

key value
id 101

这种为Redis的存储结构。

2.Redis的常用数据类型

Redis存储的是key-value结构的数据,其中key为字符串类型,value有常用的五种数据类型,所有Redis的数据类型更多是相对于value所说。

value的这五种常用类型如下:

  • 字符串类型 String
  • 哈希 hash
  • 列表 List
  • 集合 Set
  • 有序集合 ZSet

这五种类型大概如下图格式:
Redis的基本操作,Springboot,redis,数据库,缓存,spring boot

其中哈希类似Java中的hashMap集合,列表类似Java中的LinkedList,集合类似Java中的HashSet集合,且无序,有序集合类似Java中的TreeSet。

3.Redis的常用命令

以下命令均可在Redis客户端执行

1.字符串操作命令

set key value     //设置key值和value值
get key           //根据指定key值获取value值
setex key seconds value     //设置key值的value秒后过期
setnx key value       //只有在key值不存在的时候才能设置,存在则无效。

2.哈希操作命令

hset key field value         //添加或设置对应的哈希键值对
hget key field        //根据key和哈希的键获取值
hdel key field        //删除对应的哈希键值对
hkeys key       //获取哈希表中的所有键
hvals key       //获取哈希表中的所有值

3.列表操作命令

lpush key value1 [value2]         //将一个或多个值插入列表
lrange key start stop            //获取指定范围内的元素
rpop key                        //移除并获取列表最后一个元素
len key                          //获取列表长度

4.集合操作命令

SADD key member1 [member2]       //向集合添加一个或多个成员
SMEMBERS key					 //返回集合中的所有成员
SCARD key						 //获取集合的成员数
SINTER key1 [key2]				 //返回给定所有集合的交集
SUNION key1 [key2]				 //返回所有给定集合的并集
SREM key member1 [member2]		 //删除集合中一个或多个成员

5.有序集合操作命令

ZADD key score1 member1 [score2 member2]//向有序集合添加一个或多个成员
ZRANGE key start stop [WITHSCORES]//通过索引区间返回有序集合中指定区间内的成员
ZINCRBY key increment member//有序集合中对指定成员的分数加上增量 increment
ZREM key member [member ..]//移除有序集合中的一个或多个成员

6.通用操作命令

KEYS pattern //查找所有符合给定惯式(patern)的key
EXISTS key //检查给定 key 是否存在
TYPE key //返回 key 所储存的值的类型
DEL key //该命令用于在key存在且删除这个key

4.Springboot配置Redis

redis的Java客户端包括Jedis,Lettuce,Spring Data Redis,我们在Springboot项目中使用易于集成的Spring Data Redis。

以下就是在Springboot项目中如何使用Redis

1.导入SpringDataRedis的Maven坐标

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

2.配置Redis的数据源

spring:
  redis:
    host: localhost
    port: 6379
    database: 0

3.编写配置类,创还能RedisTemplate对象

@Configuration
@Slf4j
public class RedisConfiguration {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        log.info("创建RedisTemplate");
        RedisTemplate redisTemplate = new RedisTemplate();
        //设置Redis连接工厂对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置RedisTemplate序列化
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}

4.使用RedisTemplate操作Redis对象

public class SpringDataRedisTest {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testSpringDataRedis(){
        System.out.println(redisTemplate);
        //字符串类型Redis的操作对象
        ValueOperations ops = redisTemplate.opsForValue();
        //List类型的操作对象
        ListOperations listOperations = redisTemplate.opsForList();
        //Hash类型的操作对象
        HashOperations ops1 = redisTemplate.opsForHash();
        //set类型的操作对象
        SetOperations setOperations = redisTemplate.opsForSet();
        //ZSET类型的操作对象
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
    }

    */
/**
     * 操作字符串类型的数据
     *//*

    @Test
    public void testString(){
        //set get setex setnx
        redisTemplate.opsForValue().set("city","北京");
        String city = (String) redisTemplate.opsForValue().get("city");
        System.out.println(city);
        redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES);
        redisTemplate.opsForValue().setIfAbsent("lock","1");
        redisTemplate.opsForValue().setIfAbsent("lock","2");
    }

    */
/**
     * 操作哈希类型的数据
     *//*

    @Test
    public void testHash(){
        //hset, hget,hdel,hkeys,hvals
        HashOperations ops = redisTemplate.opsForHash();
        ops.put("100","name","xiaoming");
        ops.put("100","age","22");
        String name = (String) ops.get("100", "name");
        System.out.println(name);
        Set keys = ops.keys("100");
        System.out.println(keys);
        List values = ops.values("100");
        System.out.println(values);
        ops.delete("100","age");
    }

    */
/**
     * 操作列表类型的数据
     *//*

    @Test
    public void testList(){
        //lpush,lrange,rpop,llen
        ListOperations ops = redisTemplate.opsForList();
        ops.leftPushAll("mylist","a","b","c");
        ops.leftPush("mylist","d");
        List mylist = ops.range("mylist", 0, -1);
        System.out.println(mylist);
        ops.rightPop("mylist");
        Long size = ops.size("mylist");
        System.out.println(size);
    }


    */
/**
     * 操作集合类型的数据
     *//*

    @Test
    public void testSet(){
        //sadd, smembers,scard,sinter,sunion,srem
        SetOperations setOperations = redisTemplate.opsForSet();
        setOperations.add("set1","a","b",'c','d');
        setOperations.add("set2","a","b",'x','y');
        Set set1 = setOperations.members("set1");
        System.out.println(set1);
        Long size = setOperations.size("set1");
        System.out.println(size);
        Set intersect = setOperations.intersect("set1", "set2");
        System.out.println(intersect);
        Set union = setOperations.union("set1", "set2");
        System.out.println(union);
        setOperations.remove("set1","a","b");
    }

    */
/**
     * 操作有序集合类型的数据
     *//*

    @Test
    public void testZset(){
        //zadd,zrange,zincrby,zrem
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
        zSetOperations.add("zset1","a",10);
        zSetOperations.add("zset1","b",12);
        zSetOperations.add("zset1","c",9);

        Set zset1 = zSetOperations.range("zset1", 0, -1);
        System.out.println(zset1);

        zSetOperations.incrementScore("zset1","c",10);

        zSetOperations.remove("zset1","a","b");

    }

    */
/**
     * 通用命令操作
     *//*

    @Test
    public void testCommon(){
        //keys,exists,type,del
        Set keys = redisTemplate.keys("*");
        System.out.println(keys);
        System.out.println("=======================");
        Boolean name = redisTemplate.hasKey("name");
        Boolean set1 = redisTemplate.hasKey("set1");
        System.out.println(name);
        System.out.println(set1);
        System.out.println("======================");
        for (Object key : keys) {
            DataType type = redisTemplate.type(key);
            System.out.println(type);
        }
        redisTemplate.delete("mylist");
    }
}

5.总结

Redis的五种类型主要是对Redis值的操作,对Redis键的操作主要集中在通用命令上,其中最重要的是如何在Springboot项目中使用并且操作Redis,应从使用Java分装的Redis操作类,到连接到Redis服务器,再讲该类配置到该项目中使用,最后使用该类进行具体的操作。文章来源地址https://www.toymoban.com/news/detail-667367.html

到了这里,关于Redis的基本操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初识Redis——Redis概述、安装、基本操作

    目录 一、NoSQL介绍 1.1什么是NoSQL 1.2为什么会出现NoSQL技术 1.3NoSQL的类别 1.4传统的ACID是什么 1.5 CAP 1.5.1 经典CAP图 1.5.4 什么是BASE 二、Redis概述 2.1 什么是Redis 2.2 Redis能干什么 2.3 Redis的特点 2.4 Redis与memcached对比 2.5 Redis的安装 2.6 Docker安装 三、 基本操作 3.1.1 set 3.1.2set操作的选

    2024年02月16日
    浏览(44)
  • Redis的基本操作

    Redis是一款基于 内存 的key-value结构数据库,它的主要优点有以下几点: 基于内存存储,读写性能高 适合存储热点数据 企业应用广泛 其结构为: key value id 101 这种为Redis的存储结构。 Redis存储的是key-value结构的数据,其中key为字符串类型,value有常用的五种数据类型,所有

    2024年02月11日
    浏览(29)
  • redis操作基本命令

    Redis —— Remote Dictionary Server ,它是一个开源的使用ANSI C语言编写、 支持网络 、可基于 内存亦可持久化 的日志型、 Key-Value 数据库,并提供多种语言的API,我们可使用它构建高性能,可扩展的Web应用程序。 具有以下特点: 异常快速:  Redis数据库完全在 内存 中,因此处理速

    2024年02月09日
    浏览(34)
  • Redis的安装方法与基本操作

    目录 前言 一、REDIS概述 二、REDIS安装 1、编译安装 2.yum安装 三、Redis的目录结构 四、基础命令解析 五、在一台服务器上启动多个redis 六、数据库的基本操作 (一)登录数据库 (二)基础命令 七、Redis持久化 (一)RDB持久化 (二)AOF持久化 总结 Redis是一个开源的内存数据结

    2024年02月13日
    浏览(42)
  • 【Redis】Redis在Linux与windows上的安装&基本操作语法

    Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品 有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供

    2024年02月06日
    浏览(53)
  • Redis,MongoDB基本操作练习题

    语法不会可以在官网上查询MongoDB教程 String类型基本操作: List类型基本操作: hash类型基本操作: 创建一个数据库 名字grade: 创建class集合: 集合中插入若干数据: 查看班级所有人信息: 查看班级中年龄为8岁的学生信息: 查看年龄大于10岁的学生信息: 查看年龄在 4—8岁

    2024年02月16日
    浏览(41)
  • Redis【实践篇】之RedisTemplate基本操作

    在SpringBoot中,可以使用RedisTemplate来操作Redis数据库。RedisTemplate是Spring Data Redis提供的一个强大的Redis客户端,它支持各种Redis数据结构,并提供了许多方便的方法来操作这些数据结构。下面是一些RedisTemplate的用法示例: 在此示例中,创建了一个RedisTemplate对象,并设置了key和

    2024年02月16日
    浏览(94)
  • Redis的基本操作与应用(附相关面试题...)

    1、概述:Redis是一款基于 内存 以 KV键值对 存储的中间件技术,常用 做缓存 ,支持 数据持久化 。 2、数据类型:  常用5种数据类型:String(字符串)、List(列表)、set(集合)、hash(哈希)、zset(有序集合) 结构类型 结构存储的值 应用 String(字符串) 可以是字符串、整数或浮

    2024年02月09日
    浏览(42)
  • springboot+redis+mysql+quartz-通过Java操作redis的KEYS*命令获取缓存数据定时更新数据库

    代码讲解: 3-点赞功能-定时持久化到数据库(pipeline+lua)-完善过程2_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1w14y1o7BV 本文章代码: blogLike_schedule/like03 · xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like03 数据

    2024年02月15日
    浏览(52)
  • springboot+redis+mysql+quartz-通过Java操作jedis使用pipeline获取缓存数据定时更新数据库

    代码讲解:6-点赞功能-定时持久化到数据库-pipeline+lua-优化pipeline_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1yP411C7dr 代码: blogLike_schedule/like06 · xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like06 数据库表的

    2024年02月16日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包