0
点赞
收藏
分享

微信扫一扫

Python进阶知识2

自信的姐姐 2024-11-03 阅读 26

文章

Redis基础入门

一:redis安装配置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

简单介绍一下redis:redis是一种键值类型的数据库,我们之前学过mysql,mysql也是数据库,他们之间的区别是,redis把数据存储在磁盘中,redis把数据存储在内存中,mysql是二维表类型的数据库;

那么redis有什么特点呢:1:存储在内存里读写速度快;2:一般存储一些热点数据;

然后就来安装redis:【Redis】Redis 数据库 安装、配置、访问 ( Redis 简介 | 下载 Redis 安装包 | 安装 Redis 数据库 | 命令行访问 Redis | 使用可视化工具访问 Redis )_redis访问-CSDN博客

详细安装教程在上面,有需要的可以参考;

然后就是连接,配置测试了,这里使用的是一个图形化界面工具:Another Redis Desktop Manager

二:redis常用数据类型

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

string:最简单的数据类型就是一个字符串;

哈希:存放的键值对,适合存储java的对象,key为属性名,value为属性值

列表:存储有顺序的数据,可以从前插入,也可以从后插入,可以有重复元素

集合:存放无需数据,没有重复元素,可以进行一些计算,比如交集,并集

有序集合:存储有顺序的数据,没有重复元素;

三:常用命令

1:字符串

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1:set key value :

直接设置键值对;

2:get key

获取key的值

3:setex key seconds value

设置一个值,在指定时间(秒)后过期;

4:setnx key value

设置值,如果存在返回0不能设置,不存在返回1,设置成功

2:哈希

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1:hset key f v:

为指定key的f字段设置v值;

2:hget key f;

获取指定key的f对应的值

3:hdel key f

删除指定key的f对应的这条数据

4:hkeys key

获取key中的所有字段名

5:hvals key

获取key中所有的属性值

3:列表

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1:lpush key v1 …

从头部插入一个或多个元素(后来居上)

2:lrange key start stop

查询指定范围的元素,我们指定start为0,stop为-1就是查询全部元素

3:rpop key

删除key列表的最后一个元素

4:llen key

返回key列表的长度

4:无序集合

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1:sadd key v1 …

向key集合中插入一个或者多个元素

2:scard key

返回key集合的元素个数

3:smembers key

返回集合的全部元素

4:sinter key1 key2

返回key1 和 key2 集合的交集

5:sunion key1 key2

返回key1 和key2的并集

6:srem key v,,,

删除key集合中的一个或者多个元素

5:有序集合

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1:zadd key s1 v1 s2 v2 .。。

在key中插入v1v2元素,并且带有分数s1,s2 ,会根据分数排序

2:zrange key s1 s2 【withscores】

查询key集合中索引s1到s2的数据,如果需要可以使用withscores,返回的时候带有分数

3:zinscrby key v1 member

给key集合中的member的分数加上v1

4:zrem key m1 m2.。。

删除集合中一个或者多个元素

6:通用命令

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1:keys pattern

查找所有指定格式的key,比如说使用*通配符来模糊匹配

2:exists key

返回指定key是否存在,存在1,不存在0

3:type key

返回指定key存储的类型

4:del key

删除key

四:在java中操作redis

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1:导入依赖坐标:

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

2:配置数据源

redis:
  host: ${sky.redis.host}
  port: ${sky.redis.port}

3:编写配置类

@Configuration
@Slf4j
public class RedisConfiguration {
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate redisTemplate = new RedisTemplate();
        //设置redis的连接工厂对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置rediskey的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}

4:通过redistemplate来操作redis:

@SpringBootTest
public class RedisTest {
    @Autowired
    private RedisTemplate redisTemplate;
    @Test
    public void test(){
        System.out.println(redisTemplate);
    }
}
ValueOperations valueOperations = redisTemplate.opsForValue();//字符串
HashOperations hashOperations = redisTemplate.opsForHash();//哈希
ListOperations listOperations = redisTemplate.opsForList();//列表
SetOperations setOperations = redisTemplate.opsForSet();//无序集合
ZSetOperations zSetOperations = redisTemplate.opsForZSet();//有序集合

1:操作string类型的数据

@Test
public void testString(){
    ValueOperations valueOperations = redisTemplate.opsForValue();
    valueOperations.set("姓名","小名");
    String o = (String) valueOperations.get("姓名");
    System.out.println(o);
    valueOperations.set("code","1234",40, TimeUnit.SECONDS);
    valueOperations.setIfAbsent("code","12");
}

2: 操作哈希类型的数据

@Test
public void testHash(){
    HashOperations hashOperations = redisTemplate.opsForHash();
    hashOperations.put("小明","name","xiaoming");
    hashOperations.put("小明","age","18");
    hashOperations.put("小明","sex","男");
    System.out.println(hashOperations.get("小明", "name"));
    hashOperations.delete("小明","name");
    System.out.println(hashOperations.keys("小明"));
    System.out.println(hashOperations.values("小明"));

}

3:操作其他数据类型

@Test
public void testList(){
    ListOperations listOperations = redisTemplate.opsForList();
    listOperations.leftPush("l1","1");
    listOperations.leftPushAll("l1","2","3");
    System.out.println(listOperations.range("l1", 0, 2));
    listOperations.rightPop("l1");
    System.out.println(listOperations.size("l1"));

}
@Test
public void testSet(){
    SetOperations setOperations = redisTemplate.opsForSet();
    setOperations.add("set1","1" ,"2","3");
    setOperations.add("set2","3","4","5");
    System.out.println(setOperations.size("set1"));
    System.out.println(setOperations.members("set1"));
    System.out.println(setOperations.intersect("set1", "set2"));
    System.out.println(setOperations.union("set1", "set2"));

}
public void testZset(){
    ZSetOperations zSetOperations = redisTemplate.opsForZSet();
    zSetOperations.add("zset1","1",0.2);
    zSetOperations.add("zset1","2",0.3);
    zSetOperations.add("zset1","3",0.4);
    System.out.println(zSetOperations.range("zset1", 0, 2));
    zSetOperations.remove("zest","1");
    zSetOperations.incrementScore("zset","1",1);
    System.out.println(zSetOperations.range("zset1", 0, -1));


}
@Test
public void testCommon(){
    System.out.println(redisTemplate.type("set1"));
    System.out.println(redisTemplate.keys("*"));
    redisTemplate.delete("set1");
    System.out.println(redisTemplate.hasKey("set1"));
    

}

ations.range(“zset1”, 0, -1));

}


> add,remove,range,incremnetscore

```java
@Test
public void testCommon(){
    System.out.println(redisTemplate.type("set1"));
    System.out.println(redisTemplate.keys("*"));
    redisTemplate.delete("set1");
    System.out.println(redisTemplate.hasKey("set1"));
    

}
举报

相关推荐

0 条评论