• redis基础常识、数据类型及基本命令


    一、nosql的四大种类

    1、四大种类

    在这里插入图片描述

    二、什么是redis?

    1、redis概述

    Remote dictory Server(远程字典服务),是一个用c语言编写、支持网络、基于内存可持久化的日志型、key-value数据库,提供多种语言的api。

    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串
    (strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间
    (geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions)
     和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
    
    • 1
    • 2
    • 3
    • 4

    这是官方的原话翻译,所以可看出redis可用于数据库、缓存和消息中间件以及其数据结构

    三、redis性能测试

    在Linux或Window安装redis之后,安装内容有一个redis-benchmark,这是redis自带的性能测试工具,执行命令为redis-beachmark [option] [option value]
    下面是菜鸟教程罗列的参数
    在这里插入图片描述
    在这里插入图片描述

    四、redis的基础知识

    1、redis有十六个数据库

    在安装的redis配置文件中可以看到,默认的使用的数据库为0,可以指定数据库,从0到‘databases’-1,而databases为16
    在这里插入图片描述
    在这里插入图片描述

    2、redis是单线程的

    redis是基于内存进行操作的,所以是根据机器的内存和带宽来决定其性能,而不是根据CPU,而如果redis是多线程,那么就需要cpu来调度,cpu在多线程的上下文切换会耗时,所以能使用单线程就使用单线程,这是最佳方案。

    五、redis的基本命令

    1、keys * :显示所有key
    2、set [key] [key值] :添加数据
    3、get [key] :获取key的值
    4、exists [key]:判断key是否存在
    5、type [key]:显示key的数据类型
    6、move [key] [16个数据库中任意一个]:将key移动到某个数据库
    7、select [16个数据库中任意一个]:切换数据库
    8、flushdb:清除当前数据库内容
    9、flushall:清除所有数据库内容
    10、dbsize:查看当前数据库大小
    11、expire [key] [数字/秒] :设置key的失效时间
    12、ttl [key] :显示生存时间

    六、redis的五大数据类型

    1、String(字符串)类型

    上面基本命令的添加数据和获取key值添加的就是String类型的值
    在这里插入图片描述
    (1)append [key]:追加在最后面,如果追加的key不存在,则相当于创建一个新的key
    (2)incr [key]:加1
    (3)decr [key]:减一
    (4)incrby [key] [数值]:添加数值,可指定增量
    (5)decrby [key] [数值]:减少数值,可指定增量
    在这里插入图片描述
    (6)getrange [key] 起始下标 结束下标:获取指定范围的字符串,第一个的下标值为0,且为闭区间
    (7)getrange [key] 0 -1:查看全部字符串
    (8)setrange [key] [下标] [替换的字符串]:替换指定位置的字符串,替换超过原本字符串长度,则追加在后面
    在这里插入图片描述
    (9)setex [key] [生存时间] [key value]:添加数据并设置生存时间
    (10)setnx [key] [key value] :添加key,不存在时添加
    (11)mset [key] [value] [key] [value]:一次设置多个key
    (12)msetnx [key] [value] [key] [value] : 如果不存在则添加,是原子性的,也就是要么一起成功,要么一起失败
    在这里插入图片描述
    (13)set user {name:chen,age:12}:设置对象,值设置为json格式
    (14)getset [key] [value]:值不存在时返回空,并将value设置,若存在则返回原来的值,再覆盖调原来的值
    在这里插入图片描述

    2、list类型

    (1)LPUSH [key] [value]:添加数据,往左边插入数据
    (2)LPUSH [key] 0 -1:获取所有数据
    (3)LPUSH [key] [start] [stop]:获取所有数据获取指定下标的数据
    在这里插入图片描述
    (4)RPUSH [key] [value]:添加数据,往右边插入数据
    (5)LPOP [key]:左边移除数据,移除最左边的数据
    (6)RPOP [key]:右边移除数据,移除最右边的数据
    在这里插入图片描述
    (7)LRAM [key] [count] [value]:移除指定元素
    (8)LTIME [key] [count] [value]:截取指定位置元素
    (9)RPOPLPUSH [source] [destination]:移除数组最后一位元素至另外一个数组
    在这里插入图片描述
    (10) LSET [key] [index ] [value]:根据下标插入数据
    (11)LINSERT [key] before|after pivot value :根据元素前插入数据
    在这里插入图片描述

    3、Set(集合)

    在list中的值是可以重复的,但是在Set中是不可以的。
    (1)sadd [key] [value] :添加元素
    (2)smembers [key]:显示集合所有元素
    (3)scard [key]:显示元素个数
    (4)srem [key] [value]:移除指定元素
    (5)srandmember [key] [value]: 随机取集合中的元素,可指定个数
    (6)spop [key]:随机移除元素
    在这里插入图片描述
    (7)smove [key1] [key2] [value]:将value从key1移动至key2
    (8)sdiff [key1] [key2]:差集
    (9)sinter [key1] [key2]:交集
    (10)sunion [key1] [key2]:并集
    在这里插入图片描述

    3、Hash(哈希)

    相当于key:(key:value),所以用法其实与string差不多
    (1)hset [key] [field] [value]:添加数据,所以一个key中有多个值,也就是可以有多对键值对
    (2)hget [key] [field]:获取数据
    (3)hmset [key] [field] [value] [field] [value]:可添加多条数据
    (4)hmget [key] [field] [field]:获取多条数据
    (5)hgetall [key]:获取key中全部数据,包含所有键值对信息
    (6)hdel [key] [field] [field]:删除数据,可删除一个也可删除多个
    (7)hexists [key] [field]:判断key是否存在
    在这里插入图片描述
    (8)hincrby [key] [field] [incrment] :加incrment
    (9)hsetnx [key] [field] [value]:如果已经存在则不添加,不存在则添加
    在这里插入图片描述

    4、Zset(有序集合)

    使用与set基本一致,只是在set的基础上加上排序
    (1)zadd [key] [score] [member]:添加数据,与set基本一致
    (2)zrange [key] start stop:获取数据,必须设置起始和终止点,从小到大排序
    (3)zrevrange [key] start stop:从大到小排序
    (3)zrangebyscore [key] min max:排序,设置最小值及最大值,输出内容会在这个范围从小到大排序
    (4)zrangebyscore [key] min max withscore:同样是排序,但是加上了数据大小显示
    在这里插入图片描述
    (5)zrem [key] member :移除某个元素
    (6)zcount [key] min max :获取指定区间的成员数量

    七、三种特殊类型

    1、geospaial(地理位置)

    也就是这个数据类型使用来存储地理位置的,存的是经度纬度,有效范围官方给出如下:
    在这里插入图片描述
    但是为什么存的是经纬度却没有将其并入基本数据类型呢?因为其实geospaial的数据类型是 Zset 类型
    关于geo命令也是只有六条点击跳转官网查看
    (1)geoadd [key] 经度 纬度 member:添加数据
    (2)geopos [key] member:查看指定数据的经纬度
    (3)geodist [key] member1 member2:返回两个地点的距离
    (4)geohash [key] member:返回地理数据的geohash字符串,11位
    (5)georadius [key] 经度 纬度 范围 单位: geo返回指定经纬度的附近数据(附近范围可指定)
    在这里插入图片描述
    (6)georediusbymember [key] member 距离 单位:找出指定member范围的数据
    在这里插入图片描述

    2、Hyperloglog基数统计

    用作于基数统计,有错误率,所以只适用于允许容错的,底层实际是string
    (1)pfadd [key] element1 element2...:添加数据
    (2)pfcount [key] :查看key数据数量
    (3)pfmerge [存放合并后的key] [合并的key] [合并的key]:合并key
    pfadd

    3、Bitmaps(位存储)

    存储0和1,可用来代表true、false等,数据类型是string
    (1)setbit [key] offset value:添加数据
    (2)getbit [key] offset:获取数据
    (3)bitcount [key]:为1的数量
    在这里插入图片描述

  • 相关阅读:
    让丢失成为过去,尽在我们的智能防丢器
    【NTN 卫星通信】卫星和无人机配合的应用场景
    线程的学习
    springboot网络招聘服务系统毕业设计源码121727
    抓包工具fiddler的基础知识
    安装MinGW-w64
    彻底了解线程池的原理——40行从零开始自己写线程池
    【2021年数学建模国赛C题第一问】基于TOPSIS法评价类模型
    Redis的Java客户端-Jedis
    跟李沐学AI之计算性能+图像分类
  • 原文地址:https://blog.csdn.net/weixin_44975592/article/details/126017049