Redis的优点及其数据类型

什么是Redis

Remote Dictionary Server(Redis)是一个开源的使用 ANSI C 语言编写、支持网络、可
基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。

Redis的优点

  1. 支持多种数据结构,如string(字符串)、list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)
  2. 支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数
    据恢复等操作,较好的防止数据丢失的手段。
  3. 支持通过 Replication 进行数据复制,通过 master-slave 机制,可以实时进行数据的
    同步复制,支持多级复制和增量复制,master-slave 机制是 Redis 进行 HA 的重要手段。
  4. 单进程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。(并发不一定是并行,有可能是串行,并行一定是并发,这个以后再讲)

Redis数据类型

string(字符串)

Redis 字符串是字节序列。Redis 字符串是二进制安全的,这意味着他们有一个已知的长
度没有任何特殊字符终止,所以你可以存储任何东西,512 兆为上限。
直接连接单机版的Redis演示就好了
在这里插入图片描述
输入: help @string 可以看到string提供的各个方法
在这里插入图片描述

  1. 基本的get 与set,因为Redis是Key-Value数据库,所以直接按键值对的方式存就好了

在这里插入图片描述
2. incr自增加1
在这里插入图片描述
3、incrby增加指定值
在这里插入图片描述
4. decr自减1
在这里插入图片描述
5. decrby减少指定值
在这里插入图片描述
6. incrbyfloat可以增加浮点数
在这里插入图片描述
7. append可以再建值末尾追加值,如果建不存在则创建并赋该值,返回字符串总长度
在这里插入图片描述
8. mget/mset 与get/set类似,不够mget/mset可以同时设置多个键的值
在这里插入图片描述
9. del 删除key
在这里插入图片描述
10. flushdb清空当前库的所有值
在这里插入图片描述

Hash(哈希)

Hash结构:
在这里插入图片描述
哈希和字符串类似,但是多了一个中间键,多了这么一个键有什么应用场景呢?

比如要存计算机与软件学院的每个学生姓名,为了区分,如果使用string存储,那么每个学生都必须有个前缀计算机与软件学院,这样我如果要拿到学生姓名还要进行IO流读写再进行字符串匹配才能拿到,这中间得消耗多少资源,而如果是hash,我中间放一个键是计算机与软件学院,value才放学生姓名我不就可以省去了许多麻烦的操作直接拿到值了。

  • help @hash 查询所有hash操作
    在这里插入图片描述

    1. hset与hget 存储单个和获取单个
      在这里插入图片描述
    2. hmset 和hmget可以同时存多个和获取多个值
      在这里插入图片描述
    3. hexists 判断哈希表中的字段名是否存在,存在返回1,不存在返回0
      在这里插入图片描述
    4. hgetall 获取一个哈希表的键值对的集合
      在这里插入图片描述
    5. hvals 只返回哈希表的字段值,不返回键值
      在这里插入图片描述
    6. hkeys 只返回filed值,不返回value值
      在这里插入图片描述
    7. hlen 返回key的hash元素个数
      在这里插入图片描述
    8. hdel 删除一个或多个字段
      在这里插入图片描述

    List(双向链表)

    在这里插入图片描述

  1. lpush key value 向链表左侧添加
    在这里插入图片描述

  2. rpush key value 向链表右侧添加
    在这里插入图片描述
    这个push是最开始的那个为基准然后不断移动的,都来看Redis了,数据结构中的双向链表应该都知道了吧

  3. lrange key start end lrange 命令将返回索引从 start 到 stop 之间的所有元素。Redis 的列
    表起始索引为 0
    在这里插入图片描述
    lrange 也支持负索引 lrange nn -2 -1 如 -1 表示最右边第一个元素 -2 表示最右边第二
    个元素,依次类推。
    在这里插入图片描述

  4. lindex key indexnumber 如果要将列表类型当做数组来用,lindex 命令是必不可少的。
    lindex 命令用来返回指定索引的元素,索引从 0 开始
    在这里插入图片描述

  5. Lset key indexnumber value 是另一个通过索引操作列表的命令,它会将索引为 index
    的元素赋值为 value。
    在这里插入图片描述

  6. lpop key 从左边移出一个元素
    在这里插入图片描述

  7. rpop key 从右边移出一个元素
    在这里插入图片描述

set(集合)

在这里插入图片描述

  1. sadd key value 添加一个 string 元素到,key 对应的 set 集合中,成功返回 1,如果元素已经
    在集合中返回 0
    在这里插入图片描述
  2. scard key 返回 set 的元素个数,如果 set 是空或者 key 不存在返回 0
    在这里插入图片描述
  3. smembers key 返回 key 对应 set 的所有元素,结果是无序的
    在这里插入图片描述
  4. sismember key value 判断 value 是否在 set 中,存在返回 1,0 表示不存在或者 key 不存

    在这里插入图片描述
  5. srem key value 从 key 对应 set 中移除给定元素,成功返回 1,如果 value 在集合中不存
    在或者 key 不存在返回 0
    在这里插入图片描述

sortedSet(有序集合)

  1. zadd key score value 将一个或多个 value 及其 socre 加入到 set 中
    在这里插入图片描述
  2. zrange key start end 0 和-1 表示从索引为 0 的元素到最后一个元素(同 LRANGE 命令相
    似)
    在这里插入图片描述
  3. zrange key 0 -1 withscores 也可以连同 score 一块输出,使用 WITHSCORES 参数
    在这里插入图片描述
  4. zremrangebyscore key start end 可用于范围删除操作
    在这里插入图片描述
    在这里插入图片描述

其他命令

1、expire key time(s) 设置一个 key 的过期时间 单位秒。时间到达后会删除 key 及 value
2、ttl key 查询已设置过期时间的 key 的剩余时间 如果返回-2 表示该键值对已经被删除
3、persist 移除给定 key 的过期时间

在这里插入图片描述
keys * 返回所有的 key 可以加*通配
在这里插入图片描述
flushdb 删除当前选择的数据库中的 key
flushall 删除所有数据库中的所有 key
在这里插入图片描述
quit 退出连接或者按crtl+C

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值