Redis的基本使用

Redis介绍

Redis(Remote Dictionary Server)远程字典服务,是一个开源的使用 ANSI C语言编写、支持网络、可基于内存亦可持久性的日志型、key-value 数据库,并提供多种语言的 API,是当下最流行的NoSQL技术之一。

Redis八种数据类型

2.1. String类型

  1. 设值与取值
    在这里插入图片描述
  2. 自增自减
    在这里插入图片描述
  3. 范围取值
    在这里插入图片描述
  4. 字符替换
    在这里插入图片描述
  5. setex和setnx
    在这里插入图片描述
  6. 同时取和设值多个值
    在这里插入图片描述
    对象值的设置与获取
    在这里插入图片描述
  7. getset方法,先get后set,不存在则返回nil
    在这里插入图片描述

2.2. List数据类型

  1. list常用作栈或者队列,指令以l开头表示左侧队列执行,r表示右侧队列执行。
    在这里插入图片描述
  2. 弹出操作pop

在这里插入图片描述
3. list索引取值与长度
在这里插入图片描述
4. 移除指定的值
在这里插入图片描述
5. ltrim截断
在这里插入图片描述
6. rpoplpush: 移除list的最后一个元素,并将它移动到新列表中
在这里插入图片描述
7. lset: 修改指定下标的值
在这里插入图片描述
8. linsert: 在列表中的某个值前面或者后面插入值
在这里插入图片描述

2.3. set数据类型

  1. 元素的增删与获取
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 差集、交集、并集
    在这里插入图片描述

2.4. hash数据类型

hash数据类型也是key-value形式,只不过value为map形式。

  1. 常用的增删取值操作
    在这里插入图片描述
    在这里插入图片描述
  2. 属性值的增加与减少
    在这里插入图片描述
  3. hsetnx: 不存在则设置
    在这里插入图片描述

2.5. zset数据类型

zset为有序set数据类型。
在这里插入图片描述
在这里插入图片描述

2.6. geospatial数据类型

geo数据类型用来计算地理位置信息,有效的位置范围为经度从 -180 度到 180 度,纬度从 -85.05112878 度到 85.05112878 度,其底层使用zset实现,zset的操作对geo类型也适用。
添加如下模拟数据:
在这里插入图片描述
获取两个位置间的距离,默认以米作为单位,还可以指定千米(km)、英里(mi)、英尺(ft)。
在这里插入图片描述
georadius 以给定的经纬度为中心,找出某一半径内的元素
在这里插入图片描述
在这里插入图片描述

2.7. hyperloglog数据类型

hyperloglog常用来统计网站的每日访问量,即UV,UV是指通过互联网访问、浏览这个网页的自然人。访问的一个电脑客户端为一个访客,一天内同一个访客仅被计算一次。hyperloglog 的优点是占用内存小,并且是固定的。存储 2^64 个不同元素的基数,只需要 12 KB 的空间。但是也可能有 0.81% 的错误率。
在这里插入图片描述

2.8. bitmap位图

bitmap就是通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值或者状态。一个bit的值,或者是0,或者是1,常用来统计只有两个取值的一些变量,下面以统计一周的打卡来说明:
在这里插入图片描述

Redis事务

redis事务的本质是一组命令,一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行,一次性、顺序性、排他性的执行一组命令。
Redis 事务的命令:

  • 开启事务:multi
  • 命令入队
  • 执行事务:exec
  • 撤销事务:discard
    在这里插入图片描述
    在事务执行过程中遇到编译型异常,比如命令有误,事务中的所有指令都不会执行。
    在这里插入图片描述
    事务执行遇到运行时异常,如事务中某条命令执行结果报错,其他命令是可以正常执行的,错误命令抛出异常。
    在这里插入图片描述
    Redis的监视(watch):watch命令可以监控一个或多个key,一旦其中有一个key被修改(或删除),之后的事务就不会执行。监控一直持续到exec命令(事务中的命令是在exec之后才执行的,所以在multi命令后可以修改watch监控的键值)。假设我们通过watch命令在事务执行之前监控了多个Keys,倘若在watch之后有任何Key的值发生了变化,exec命令执行的事务都将被放弃,同时返回Null multi-bulk应答以通知调用者事务执行失败。
    在这里插入图片描述
    在这里插入图片描述
    另一个线程:
    在这里插入图片描述

Springboot整合Redis

  1. 导入redis依赖和fastjson依赖
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.5.0</version>
        </dependency>


        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.76</version>
        </dependency>
  1. redis配置
spring.redis.host=localhost
spring.redis.port=6379
  1. 测试使用
@SpringBootTest
public class RedisTest {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testRedis() {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", "xiaoming");
        jsonObject.put("age", 20);
        jsonObject.put("job", "student");

        // 保存到redis
        redisTemplate.opsForValue().set("stu1", jsonObject.toJSONString());
        System.out.println(redisTemplate.opsForValue().get("stu1"));


    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值