Redis五种基本数据类型

    科技2024-10-22  31

    什么是Redis

    redis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库。但是,它也是不能替代关系型数据库,只能作为特定环境下的扩充。

    Redis常识

    Redis默认有16个数据库

    默认使用的是第0个数据库

    端口号 默认6379

    可以使用select 数字来切换数据库

    DBSIZE 查看DB大小

    keys * 查看数据库所有的key

    flushdb 清空当前数据库

    FLUSHALL 清空所有数据库

    set name 1111

    get name

    111

    Redis是单线程的 且速度非常快 基于内存操作 CPU不是Redis的性能瓶颈

    Redis的性能瓶颈是根据机器的内存和网络带宽决定的

    Redis为什么是单线程速度还是这么快?

    Redis是c语言编写的 100000+的QPS 不比同样是key - value的Memecache差

    Redis是把所有的数据放在内存中,所以用单线程去操作效率是最高的,多线程(CPU上下文切换 会有耗时) 对于内存系统来说 如果没有上下文切换最快。

    Redis-key

    启动服务 redis-serve kconfig/redis-config

    测试连接

    EXISTS name 判断键key是否存在

    move name 1 移除当前的key

    设置过期时间 EXPIRE name 10 设置key的过期时间 10秒钟自动过期 tt1 name 查看key的剩余时间

    clear清理界面

    type name 查看key的类型

    五大基本数据类型

    Redis主要有5种数据类型,包括String,List,Set,Zset,Hash,满足大部分的使用要求

    数据类型可以存储的值操作应用场景STRING字符串、整数或者浮点数对整个字符串或者字符串的其中一部分执行操作对整数和浮点数执行自增或者自减操作做简单的键值对缓存LIST列表从两端压入或者弹出元素对单个或者多个元素进行修剪,只保留一个范围内的元素存储一些列表型的数据结构,类似粉丝列表、文章的评论列表之类的数据SET无序集合添加、获取、移除单个元素检查一个元素是否存在于集合中计算交集、并集、差集从集合里面随机获取元素交集、并集、差集的操作,比如交集,可以把两个人的粉丝列表整一个交集HASH包含键值对的无序散列表添加、获取、移除单个键值对获取所有键值对检查某个键是否存在结构化的数据,比如一个对象ZSET有序集合添加、获取、删除元素根据分值范围或者成员来获取元素计算一个键的排名去重但可以排序,如获取排名前几名的用户

    String类型(字符串)

    内部结构使用SDS保存 类似与java中的ArrayList

    常用场景:缓存功能 计数器 共享用户Session

    APPEND key1 “11” 给key1追加字符串(如果没有这个key 就相当于set key)

    key * 获得所以的key

    EXISTS key1 判断某一个key是否存在

    截取字符串STRLEN key 获取字符串长度

    实现i++操作

    set views 0

    incr views +1操作

    decr views -1操作

    INCRBY views 10 +10操作

    DECRBY views 10 -10操作

    List集合(列表)

    常用场景:粉丝列表 文章评论

    可以从两端取出或压入数据 可以实现 队列 栈

    LPUSH list one 将一个值或者多个值 放入列表的头部 从左边放进去

    LPUSH list two

    LPUSH list three

    LRANGE list 0 -1 获取list全部的值

    LRANGE list 0 1 获取0到1的值 获得的是 three two

    RPUSH 将一个值或者多个值 放入列表的尾部 从右边放进去

    移除左边第一个值 Lpop list 移除右边第一个值 Rpop list

    lindex list 1获取下标为1的值

    Llen list 返回列表的长度

    移除特定的值

    Lrem list 1 one 移除list列表其中的一个one 精准配备

    Set(无序不重复集合)

    自动去重 直接基于 Set 将系统里需要去重的数据扔进去,自动就给去重了

    sadd myset “hello” 添加一个set无序集合 添加一个hello值

    SMEMBERS myset 查看指定set的所有的值

    ISMEMBER myset world 判断一个值是不是在set集合中

    scard myset 查看set里面的元素个数

    srem myset hello 移除hello元素

    SRANDMEMBER myset 随机得到一个set里面的元素 可以在后面加数字获得的是随机的数字

    spop myset 随机移除元素

    Hash

    包含键值对的无序散列表 本质和String没有太大区别 区别就是value变成了value)

    key map

    hset myhash field name新建一个hash 存放一个key vaule的值

    hset myhash field name field1 name2 新增两个key value

    hget myhash field 取得值

    hget myhash field field2 取得2个键的值

    hgetall myhash 查看所有的值

    hdel myhash filed1 删除hash指定的key字段 对应的value也删除了

    hgetall myhash 获得全部的值

    hlen myhash 查看hash长度

    HEXISTS myhash field1 判断hash中指定字段是否存在

    只获得key hkeys myhash

    只获取value hvals myhash

    Zset(有序集合)

    在set的基础上 增加了一个值

    zadd myset 1 one

    zadd myset 2 two 3 three 添加数据 前面的数字为序号

    ZRANGE myset 0 -1 获取全部的值

    ZRANGEBYSCORE salary -inf +inf按成绩排序 从最小到最大

    ZRANGEBYSCORE salary -inf +inf withscores 按成绩排序 从最小到最大 同时输出成绩

    ZRANGEBYSCORE salary -inf 2500 withscores 显示小于2500员工的升序排序

    移除元素

    zrange salary 0 -1 打印全部

    zrem salart 小红 移除小红

    三种特殊数据类型

    geospatial 地理位置

    Hyperloglog基数统计

    Bitmap位图场景详解

    Processed: 0.010, SQL: 8