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");
}
复制代码
相关推荐
究极无敌暴龙战神X1 分钟前
JS进阶学习04
学习
勤劳的进取家12 分钟前
论文阅读:Next-Generation Database Interfaces:A Survey of LLM-based Text-to-SQL
数据库·sql
文牧之16 分钟前
Oracle Enqueue Names
运维·数据库·oracle
superior tigre19 分钟前
C++学习:六个月从基础到就业——多线程编程:std::thread基础
c++·学习
widder_21 分钟前
软考中级软件设计师——操作系统篇
运维·服务器·数据库
永日4567037 分钟前
学习日记-day12-5.21
学习
懵逼的小黑子1 小时前
用户有一个Django模型没有设置主键,现在需要设置主键。
数据库·django
ly49831 小时前
Suricata 3规则介绍、以及使用
数据库·mysql
Hongs_Cai1 小时前
高级学习算法(神经网络 决策树)
笔记·神经网络·学习·算法·决策树
时序数据说1 小时前
分布式集群中的共识算法及其在时序数据库IoTDB中的应用
大数据·数据库·分布式·开源·时序数据库·iotdb·共识算法