Redis基础入门

本文详细介绍了Redis的基础知识,包括其入门、数据类型(字符串、哈希、列表、集合、有序集合)、常用命令以及在Java中的操作方法,涉及Jedis、Lettuce和SpringDataRedis的使用示例。
摘要由CSDN通过智能技术生成

目录

一:Redis入门

1.1:Redis简介

1.2:Redis下载与安装

1.2.1:Windows版的Redis下载与安装

1.3:Redis服务启动与安装

1.3.1在解压后的文件中输入cmd

1.3.2:在cmd中输入命令

1.3.3:启动成功

1.3.4:连接服务端 

1.3.5:停止Redis服务 

二:Redis数据类型

2.1:简单介绍5种数据类型

2.2:5种数据类型的特点

三:Redis常用命令

3.1:字符串操作命令

3.2:哈希操作命令

 3.3:列表操作命令

3.4:集合操作命令 (无序,不可重复)

3.5:有序集合操作命令 (有序)

3.6:通用命令

四:在Java中操作Redis

4.1:Redis的Java客户端

4.2:Spring Data Redis使用方式

4.3:5种类型操作方式

4.3.1:字符串指令在Java中的使用

 4.3.2:哈希指令在Java中的使用

4.3.3:列表指令在Java中的使用 

4.3.4:无序集合指令在java中的使用 

4.3.5:有序集合在Java中的使用

4.3.6:通用命令 


一:Redis入门

1.1:Redis简介

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

Redis与SQL不同的是,SQL是以二维表存储数据,Redis以键值对存储数据。

优点:

      1:基于内存存储,读写性能高

      2:适合存储热点数据(热点商品,资讯,新闻)-->特点:访问量大的数据。

1.2:Redis下载与安装

1.2.1:Windows版的Redis下载与安装

 将其下载好的window版的Redis进行下载后,解压缩,会得到下面的目录。

1.3:Redis服务启动与安装

1.3.1在解压后的文件中输入cmd

1.3.2:在cmd中输入命令

redis-server.exe redis.windows.conf

1.3.3:启动成功

1.3.4:连接服务端 

重复1 2 两个步骤,重新开启一个cmd命令行,输入

redis-cli.exe

当出现底下这个代码时:则代表连接到服务端 

连接到别的Redis服务

 

1.3.5:停止Redis服务 

二:Redis数据类型

2.1:简单介绍5种数据类型

2.2:5种数据类型的特点

*字符串:普通字符串,Redis最简单的数据类型。

*哈希:也叫散列,类似于Java中HashMap结构,常用来存储Java中的对象。

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

*集合:无序集合,类似于Java中的HashSet

*有序集合:每个元素会关联一个分数,根据分数升序,无重复元素

 

三:Redis常用命令

3.1:字符串操作命令

SET key value设置指定key的值
Get key获取指定key的值
SETEX key seconds value设置指定key的值,并将key的过期时间设为seconds秒(常用在验证码)
SETNX key value只有存在key不存在时,设置key的值

 代码演示:

OK
> get  name
jack
> get abc
null
> setex code 30 1234
OK
> get code
1234
> get code
null

3.2:哈希操作命令

HSET key field value将哈希表key中的字段fileld的值设为value
HGTE key field获取存储在哈希表种指定字段的值
HDEL key field删除存储在哈希表种的指定字段
HKEYS key获取哈希表中的字段
HVALS key获取哈希表中所有值
> Hset 100 name xiaoming
1
> hset 100 age 22
1
> Hget 100  name
xiaoming
> Hget 100 age
22
> Hdel 100 name
1
> Hset 100 name zhangsan
1
> HKEYS key
> HKEYS 100
age
name
> HVA
ERR unknown command 'hva'
> HVALS 100
22
zhangsan

 3.3:列表操作命令

LPUSH key value1[value2]将一个或多个插入到列表头部
LRIGHT key start stop获取列表指定范围内的元素
RPOP key移除并获取列表最后一个元素
LIEN  key获取列表长度
> lpush mylist a b c
3

 

 0代表从列表的第一个元素开始,-1代表列表的最后一个元素

> lrange mylist 0 -1
d
c
b
a

rpop命令删除列表的最后一个元素。rpop key 

> rpop mylist
a
> Llen mylist
3

3.4:集合操作命令 (无序,不可重复)

sadd key member1 member2向集合添加一个或多个成员
smembers key返回集合中的所有成员
scard key返回集合中的成员数
sinter key1 key2返回给定集合中的交集
sunion key1 key2返回所有给定集合的并集
srem key member1 member2删除集合中一个或多个集合

添加集合 set1 set2 

> sadd set1 1 2 3 4 5
5
> sadd set2 1 2 3 4 10
5

 

查询当前集合的成员

> smembers set1
1
2
3
4
5

 查询当前集合的成员的个数

> scard set1
5

求交集

> sinter set1 set2
1
2
3
4

求并集

> sunion set1 set2
1
2
3
4
5
10

 删除集合中的元素

> srem set1 1
1

3.5:有序集合操作命令 (有序)

zadd key score1 member1 score2 member2向有序集合添加一个或多个成员
zrange key start stop【withscores】通过索引返回集合中的成员
zincrby key increment member分数+increament
zrem key member删除集合中的元素

在有序集合中添加元素:按刚开始所赋予的分数进行排序,按照升序进行排序

> zadd zset1 10.0 a 10.5 b
2
> zadd  zset1 10.2 c
1

 

> zrange zset1 0 -1 withscores
a
10
c
10.199999999999999
b
10.5

 给集合中的某一个元素增加score值

> zincrby zset1 5.0 a
15

 删除某一个元素

> zrem zset1 a
1

3.6:通用命令

keys pattern查询所有符合给定模式的key
exists key检查给定key是否存在
type key返回key所储存的值的类型
del key该命令用于在key存在是删除key

查看所有的key值 

> keys *
set1
key1
person
zset1
name
set2
100
mylist

 查看key的类型

> type 100
hash

 判断key存不存在

> EXISTS 100
1

删除key值 

> del 100
1

四:在Java中操作Redis

4.1:Redis的Java客户端

1:Jedis

2:Lettuce:基于多线程实现的redis

3:Spring Data Redis:将jedis和Lettuce进行高度封装。

4.2:Spring Data Redis使用方式

操作步骤

4.2.1:导入Spring Data Redis 的maven坐标

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

4.2.2:配置Redis数据源:可以配置database(默认是0-15个库)

spring:
  redis:
    host: localhost
    port: 6379

4.2.3:编写配置类,创建RedisTemplate对象

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

生成测试类:

@SpringBootTest
class RedisConfigurationTest {
    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    void redisTemplate() {
        System.out.println(redisTemplate);
        //操作字符串
        ValueOperations valueOperations = redisTemplate.opsForValue();
        //操作哈希
        HashOperations hashOperations = redisTemplate.opsForHash();
        //操作链表
        ListOperations listOperations = redisTemplate.opsForList();
        //操作无序集合
        SetOperations setOperations = redisTemplate.opsForSet();
        //操作有序集合
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
    }
}

4:通过RedisTemplate对象操作Redis

 

4.3:5种类型操作方式

4.3.1:字符串指令在Java中的使用

在测试类中使用:

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

 4.3.2:哈希指令在Java中的使用

 @Test
    public void testHash(){
        //hset  
        HashOperations hashOperations = redisTemplate.opsForHash();
        hashOperations.put("Person","name","张三");
        hashOperations.put("Person","age",20);
        //hget
        String  name = (String)hashOperations.get("Person", "name");
        //删除hash中对应的key
        Set person = hashOperations.keys("Person");
        System.out.println(person);
        List person1 = hashOperations.values("Person");
        System.out.println(person1);
        hashOperations.delete("Person","age");
    }

4.3.3:列表指令在Java中的使用 

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

4.3.4:无序集合指令在java中的使用 

  @Test
    public void testSet(){
        SetOperations setOperations = redisTemplate.opsForSet();
        //sadd
        setOperations.add("set1","a","b","c","d");
        setOperations.add("set2","a","b","c","y");
        //smember 获取集合中的所有成员
        Set set1 = setOperations.members("set1");
        System.out.println(set1);
        //ssize 获取集合中成员的个数
        Long set11 = setOperations.size("set1");
        System.out.println(set11);
        //求两个集合中的交集
        Set intersect = setOperations.intersect("set1", "set2");
        System.out.println(intersect);
        //求两个集合的并集
        Set union = setOperations.union("set1", "set2");
        System.out.println(union);
        //删除集合中的元素
        setOperations.remove("set1","a");
    }

运行结果:

4.3.5:有序集合在Java中的使用

 @Test
    void testZset(){
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
        //zadd
        zSetOperations.add("zset1","a",10.0);
        zSetOperations.add("zset1","b",10.1);
        zSetOperations.add("zset1","c",10.2);
        //zrange
        zSetOperations.range("zset1",0,-1);
        //zincrby
        zSetOperations.incrementScore("zset1","c",10);
        //zream
        zSetOperations.remove("zset1","a");
    }

4.3.6:通用命令 

 @Test
    void testCommon(){
       //判断有没有包含某个字符的key值
        Set keys = redisTemplate.keys("*");
        System.out.println(keys);
        //hasKey判断有没有key
        Boolean zset11 = redisTemplate.hasKey("zset1");
        System.out.println(zset11);
        DataType zset1 = redisTemplate.type("zset1");
        System.out.println(zset1);
        redisTemplate.delete("mylist");
    }

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DJ懒羊羊。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值