Redis入门

1 篇文章 0 订阅

目录

Redis简介

Redis下载

启动Redis服务

客户端连接

 Redis数据类型

Redis常用命令

字符串操作命令

SET key value        设置指定key的值

GET key        获取指定key的值

SETEX key seconds value        设置指定key的值,并将 key 的过期时间设为 seconds 秒

SETNX key value        只有在 key 不存在时设置 key 的值​编辑

哈希操作命令

HSET key field value将哈希表 key 中的字段 field 的值设为 value

​编辑 HGET key field        获取存储在哈希表中指定字段的值

HDEL key field        删除存储在哈希表中的指定字段

HKEYS key        获取哈希表中所有字段

HVALS key        获取哈希表中所有值

列表操作命令

LPUSH key value1 [value2]        将一个或多个值插入到列表头部

​编辑

​编辑LRANGE key start stop        获取列表指定范围内的元素

​编辑RPOP key        移除并获取列表最后一个元素

​编辑

​编辑LLEN key        获取列表长度

集合操作命令

SADD key member1[member2]     向集合添加一个或多个成员

​编辑

​编辑SMEMBERS key        返回集合中的所有成员

​编辑SCARD key        获取集合的成员数

​编辑SINTER key1 [key2]        返回给定所有集合的交集

​编辑SUNION key1 [key2]        返回所有给定集合的并集

​编辑SREM key member1 [member2]删除集合中一个或多个成员

有序集合操作命令

ZADD key score1 member1 [score2 member2]向有序集合添加一个或多个成员

ZRANGE key start stop [WITHSCORES]        通过索引区间返回有序集合中指定区间内的成员

ZINCRBY key increment member        有序集合中对指定成员的分数加上增量 increment

ZREM key member [member ...]        移除有序集合中的一个或多个成员​编辑

通用命令 

KEYS pattern        查找所有符合给定模式( pattern)的 key

​编辑

​编辑EXISTS key        检查给定 key 是否存在

​编辑TYPE key        返回 key 所储存的值的类型

​编辑

​编辑DEL key        该命令用于在 key 存在是删除 key

Redis的Java客户端 

Spring Data Redis使用方式

导入Spring Data Redis 的maven坐标

配置Redis数据源

编写配置类,创建RedisTemplate对象

通过RedisTemplate对象操作Redis 

1、操作字符串类型的数据

 2、操作哈希类型的数据

  3、操作列表类型数据

4、操作集合类型数据 

 5、操作有序集合类型

6、操作通用命令 



Redis简介

Redis是一个基于内存的 key-value 结构数据库。

基于内存存储,读写性能高。适合存储热点数据(热点商品、资讯、新闻)

Redis是一种基于内存、开源、支持多种数据结构,并具备可选持久化的键值对存储数据库。

Redis,全称为Remote Dictionary Server,是一个使用ANSIC编写的开源软件,遵守BSD协议。它主要用作数据库、缓存和消息代理。Redis区别于传统关系型数据库的是其NoSQL的特性,能够提供低延迟的高速读写操作,支撑海量数据和流量,同时拥有大规模集群的管理功能和较低的运营成本。更多关于Redis的详细分析如下:

1. 基本特性
   高性能:由于Redis基于内存运行,相较传统的磁盘数据库,它能提供极低延迟的读写速度。作为对比,Redis能每秒进行大约110,000次写入操作或81,000次读取操作。
   数据类型丰富:Redis不仅支持简单的字符串,还包括哈希、列表、集合、有序集合等五种主要数据类型,以及一种虚拟类型,这使得Redis可以满足各种不同应用场景的需求。
   原子性操作:所有的Redis操作都是原子性的,保证了操作的完整性和一致性,尤其在多客户端并发访问时,能够避免数据冲突和服务器不一致的问题。
2. 应用场景
   缓存系统:利用Redis的高速读写特性,可以大幅提升系统的读性能。适合缓存那些“热点”数据,如高频读取但写入较少的数据。
   计数器:Redis的原子操作使得它成为实现计数器的优选方案,常用于点赞数、访问量等需要精确同步的场景。
   消息队列:发布订阅模式允许消息在各个客户端之间传递,适用于聊天服务、实时通知等功能。
3. 技术特点
   单线程模型:Redis采用单进程单线程的方式运行,减少了上下文切换的开销,同时简化了并发处理的复杂性。
   数据结构设计:Redis有着独特的数据结构设计,例如简单动态字符串(SDS),与C字符串相比,它在获取字符串长度、减少内存重新分配次数等方面进行了优化。
   事务支持:通过MULTI、EXEC和DISCARD命令,Redis支持将多个命令序列化后按顺序执行,保证命令的原子性。
4. 部署架构
   主从复制:通过主从复制配置,可以提高数据的可用性,同时用从节点分担读请求,减轻主节点压力。
   高可用解决方案:Redis Sentinel提供了监控、通知和自动故障转移的功能,保障了服务的高可用性。
   分布式集群:为了应对内存资源的横向扩展需求,Redis Cluster让客户端可以感觉到一个集中式服务,而实际上由多个节点组成。

总而言之,Redis以其高性能、丰富的数据类型、广泛的应用场景和技术特性,成为了现代互联网技术中不可或缺的关键组件。从简单的缓存需求到复杂的消息队列,Redis都能提供高效可靠的解决方案。在选择使用Redis时,除了考虑如何充分发挥其性能优势外,还需关注合适的配置和优化策略以确保安全和效率。

Redis下载

Releases · microsoftarchive/redis · GitHubRedis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - Releases · microsoftarchive/redisicon-default.png?t=N7T8https://github.com/microsoftarchive/redis/releases

启动Redis服务

redis-server.exe redis.windows.conf

客户端连接

redis-cli.exe

 Redis数据类型

Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型: 

字符串 string        普通字符串,Redis中最简单的数据类型

哈希 hash        也叫散列,类似于Java中的HashMap结构

列表 list           按照插入顺序排序,可以有重复元素,类似于Java中的LinkedList

集合 set        无序集合,没有重复元素,类似于Java中的Hashset

有序集合 sorted set/zset         集合中每个元素关联一个分数(score),根据分数升序排序,没有重复元素

Redis常用命令

字符串操作命令

SET key value        设置指定key的值

GET key        获取指定key的值

SETEX key seconds value        设置指定key的值,并将 key 的过期时间设为 seconds 秒

SETNX key value        只有在 key 不存在时设置 key 的值

哈希操作命令

HSET key field value将哈希表 key 中的字段 field 的值设为 value

 

 HGET key field        获取存储在哈希表中指定字段的值

 

HDEL key field        删除存储在哈希表中的指定字段

HKEYS key        获取哈希表中所有字段

HVALS key        获取哈希表中所有值

列表操作命令

LPUSH key value1 [value2]        将一个或多个值插入到列表头部


LRANGE key start stop        获取列表指定范围内的元素


RPOP key        移除并获取列表最后一个元素


LLEN key        获取列表长度

集合操作命令

SADD key member1[member2]     向集合添加一个或多个成员


SMEMBERS key        返回集合中的所有成员


SCARD key        获取集合的成员数


SINTER key1 [key2]        返回给定所有集合的交集


SUNION key1 [key2]        返回所有给定集合的并集


SREM key member1 [member2]删除集合中一个或多个成员

有序集合操作命令

ZADD key score1 member1 [score2 member2]向有序集合添加一个或多个成员

ZRANGE key start stop [WITHSCORES]        通过索引区间返回有序集合中指定区间内的成员

ZINCRBY key increment member        有序集合中对指定成员的分数加上增量 increment

ZREM key member [member ...]        移除有序集合中的一个或多个成员

通用命令 

Redis的通用命令是不分数据类型的,都可以使用的命令:

KEYS pattern        查找所有符合给定模式( pattern)的 key


EXISTS key        检查给定 key 是否存在


TYPE key        返回 key 所储存的值的类型


DEL key        该命令用于在 key 存在是删除 key

Redis的Java客户端 

Redis 的 Java 客户端很多,这里就使用Spring Data Redis

Spring Data Redis 是 Spring 的一部分,对 Redis 底层开发包进行了高度封装。
在 Spring 项目中,可以使用spring Data Redis来简化操作。 

Spring Data Redis使用方式

操作步骤:

导入Spring Data Redis 的maven坐标

pom.xml:

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

配置Redis数据源

application.yml:

  redis:
    host: localhost
    port: 6379
    password: 123456
    database: 10

编写配置类,创建RedisTemplate对象

package com.sky.config;

import lombok.extern.slf4j.Slf4j;
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;

@Configuration
@Slf4j
public class RedisConfiguration {
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        log.info("开始创建redis模板对象...");
        RedisTemplate redisTemplate = new RedisTemplate();
        //设置redis的连接工厂对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置redis key的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}

通过RedisTemplate对象操作Redis 

1、操作字符串类型的数据
 //操作字符串类型的数据
    @Test
    public void testString(){
        //set
        redisTemplate.opsForValue().set("city","北京");
        //get
        String city = (String) redisTemplate.opsForValue().get("city");
        System.out.println(city);
        //setex
        redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES);
        //setnx
        redisTemplate.opsForValue().setIfAbsent("csdn",1);
        redisTemplate.opsForValue().setIfAbsent("csdn",2);
    }
 2、操作哈希类型的数据
//操作哈希类型的数据
 @Test
    public void testHash(){
        HashOperations hashOperations = redisTemplate.opsForHash();
        //hset
        hashOperations.put("100","name","xiaohuolong");
        hashOperations.put("100","age","18");
        //hget
        String name =(String) hashOperations.get("100", "name");
        System.out.println(name);
        //hkeys
        Set keys = hashOperations.keys("100");
        keys.forEach(s-> System.out.println(s));
        //hvals
        List values = hashOperations.values("100");
        values.forEach(s-> System.out.println(s));
        //hdel
        hashOperations.delete("100","age");
    }

  3、操作列表类型数据
 //操作列表类型数据
    @Test
    public void testList(){
        ListOperations listOperations = redisTemplate.opsForList();
        //lpush
        listOperations.leftPush("mylist","a");
        listOperations.leftPushAll("mylist","b","c","d");

        //lrange
        List mylist = listOperations.range("mylist", 0, -1);
        mylist.forEach(s-> System.out.println(s));

        //rpop
        listOperations.rightPop("mylist");
        //llen
        listOperations.size("mylist");
    }

 

4、操作集合类型数据 
//操作集合类型数据
    @Test
    public void testSet(){
        SetOperations setOperations = redisTemplate.opsForSet();
        //sadd
        setOperations.add("set1","a","b","c","d");
        setOperations.add("set2","a","b","x","y");
        // smembers
        Set set1 = setOperations.members("set1");
        set1.forEach(s-> System.out.println(s));
        // scard
        Long size = setOperations.size("set1");
        System.out.println(size);
        // sinter
        Set intersect = setOperations.intersect("set1", "set2");
        intersect.forEach(s-> System.out.println(s));
        // sunion
        Set union = setOperations.union("set1", "set2");
        union.forEach(s-> System.out.println(s));
        // srem
        setOperations.remove("set1","a","b");
    }
 5、操作有序集合类型
//操作有序集合类型
    @Test
    public void testZset(){
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
        //zadd
        zSetOperations.add("zset1","a",10);
        zSetOperations.add("zset1","b",13);
        zSetOperations.add("zset1","c",11);
        // zrange
        Set zset1 = zSetOperations.range("zset1", 0, -1);
        zset1.forEach(s-> System.out.println(s));
        // zincrby
        zSetOperations.incrementScore("zset1","a",5);
        //zrem
        zSetOperations.remove("zset1","a");
    }

6、操作通用命令 
//操作通用命令
    @Test
    public void testCommon(){
        // keys
        Set keys = redisTemplate.keys("*");
        keys.forEach(s-> System.out.println(s));
        // exists
        Boolean name = redisTemplate.hasKey("name");
        // type
       keys.forEach(s-> System.out.println(redisTemplate.type(s)));

        // del
        redisTemplate.delete("mylist");
    }


这一期就说到这里啦

努力遇见更好的自己!!!

  • 51
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Redis入门中,常用的命令有以下几个: 1. SET:用于设置键值对。可以将一个键设置为对应的值。 2. GET:用于获取键的值。可以根据键获取相应的值。 3. DEL:用于删除指定的键。可以删除一个或多个键。 4. EXISTS:用于检查键是否存在。可以判断一个键是否存在。 5. KEYS:用于获取所有键。可以获取当前Redis数据库中的所有键。 6. INCR:用于键的值自增。可以将键对应的值自增1。 7. DECR:用于键的值自减。可以将键对应的值自减1。 8. TTL:用于获取键的过期时间。可以获取键的剩余存活时间。 9. EXPIRE:用于设置键的过期时间。可以设置键的存活时间。 10. PERSIST:用于移除键的过期时间。可以取消键的存活时间。 11. LPUSH:用于将元素添加到列表的头部。可以将一个或多个元素添加到列表的头部。 12. RPUSH:用于将元素添加到列表的尾部。可以将一个或多个元素添加到列表的尾部。 13. LPOP:用于移除并返回列表的第一个元素。可以移除并返回列表的第一个元素。 14. RPOP:用于移除并返回列表的最后一个元素。可以移除并返回列表的最后一个元素。 15. SADD:用于向集合中添加元素。可以将一个或多个元素添加到集合中。 16. SMEMBERS:用于获取集合的所有成员。可以获取集合中的所有成员。 17. SCARD:用于获取集合的成员数量。可以获取集合中的成员数量。 18. ZADD:用于向有序集合中添加元素。可以将一个或多个元素添加到有序集合中。 19. ZRANGE:用于获取有序集合的指定范围内的元素。可以获取有序集合中指定范围内的元素。 20. ZCARD:用于获取有序集合的成员数量。可以获取有序集合中的成员数量。 以上是Redis入门常用的命令,可以帮助你开始使用Redis进行数据存储和操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Redis常用命令大集合(快速入门)](https://blog.csdn.net/yy12345_6_/article/details/124177795)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [尚硅谷Redis入门视频](https://download.csdn.net/download/wang9527007/10390271)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力敲代码的小火龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值