redis的学习

!

快速入门

安装

1.使用docker安装redis

sh 复制代码
docker pull redis

docker run -d --name redis -p 6379:6379 --restart unless-stopped -v /etc/docker/Redis/data:/data -v /etc/docker/Redis/conf/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes


#/your/local/path--这个是做持久化处理,把数据存储在主机下的该路径

进入redis容器

sh 复制代码
### 通过 Docker 命令进入 Redis 容器内部
docker exec -it redis /bin/bash
docker exec -it redis bash
### 进入 Redis 控制台
redis-cli
### 添加一个变量为 key 为 name , value 为 bella 的内容
> set name bella
### 查看 key 为 name 的 value 值
> get name
 
 
### 或者也可以直接通过Docker Redis 命令进入Redis控制台 (上面两个命令的结合)
docker exec -it redis redis-cli

#密码
AUTH password
#退出
exit

当连接上之后可以通过ping,redis会回复pong

2.在win上安装redis

通过解压D:\Redis\redis4.0.0\Redis-x64-3.2.100.zip

然后在cmd中输入>redis-server.exe redis.windows.conf (可以使用tab补全文件名)就成功启动了

设置密码---->找到配置文件中的 requirepass titi titi为密码

常见的数据类型

  • 字符串 string
  • 哈希 hash
  • 列表 list
  • 集合 set
  • 有序集合 sorted set / zset

数据类型的特定

常见的命令

字符串操作命令

哈希操作命令

列表操作命令

集合操作命令

有序集合操作命令

通用命令

在java中操作redis

  1. 导入Spring data redis 的maven坐标
  2. 配置redis数据源
  3. 编写配置类,创建redisTemplate对象(不写也能用)
  4. 通过Redis Template对象操作Redis

配置类

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

快速使用

java 复制代码
 @Autowired
    @Qualifier("redisTemplate")
    private RedisTemplate template;

    @Test
    public void testTemplate() {
        System.out.println(template);
        ValueOperations valueOperations = template.opsForValue();
        HashOperations hashOperations = template.opsForHash();
        SetOperations setOperations = template.opsForSet();
        ListOperations listOperations = template.opsForList();
        ZSetOperations zSetOperations = template.opsForZSet();

    }

    /**
     * 操作字符串类型的数据
     */
    @Test
    public void testString(){
    //set get setex setnx
        template.opsForValue().set("city","北京");
        String city = String.valueOf(template.opsForValue().get("city"));
        System.out.println(city);
        //健、值、过期时间、时间单位
        template.opsForValue().set("code","123321",3, TimeUnit.MINUTES);
        //setnx
        template.opsForValue().setIfAbsent("lock",1);
    }

    @Test
    public void testHash(){
     //hset hget hdel hkeys hvals
        template.opsForHash().put("100","name","tom");
        template.opsForHash().put("100","age","20");

        String name = String.valueOf(template.opsForHash().get("100", "name"));
        System.out.println(name);

        Set keys = template.opsForHash().keys("100");
        System.out.println(keys);

        List values = template.opsForHash().values("100");
        System.out.println(values);

        
        template.opsForHash().delete("100","age");
    }

s);

复制代码
    List values = template.opsForHash().values("100");
    System.out.println(values);

    
    template.opsForHash().delete("100","age");
}
复制代码
相关推荐
个 人 练 习 生2 分钟前
C++ string 类模拟实现:从底层理解字符串(上)
开发语言·c++·经验分享·学习·程序人生
坤坤子吖14 分钟前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
行百里er15 分钟前
Redis Streams——有确认、能回溯的消息队列
redis
上位机妹子29 分钟前
EF Core 两种继承映射:每层次一张表(TPH)与每类型一张表(TPT)
数据库·c#·.netcore·ef core
小马同学-34 分钟前
Redis消息队列与客户端编程
数据库·redis
for_ever_love__1 小时前
MySQL 高频面试题 30 问:索引、事务、锁、日志、主从与分库分表(MySQL 8.0 版)
java·数据库·spring boot·mysql·spring cloud·面试·总结
染指11101 小时前
140.Agent-多Agent框架-Agent执行Skills流程
数据库·人工智能·设计模式·langchain·agents
fengkai45451 小时前
十二、Redis -2
运维·数据库·redis·容器
hweiyu001 小时前
Redis命令:BLPOP
redis·缓存