nosql sql

sql 结构化

image-20230908150300667

事务特性(事务是回顾和并发控制的基本单位 四个特征: 原子性 一致性 隔离性 和持久性 简称 ACID)

ACID

nosql 非结构化

  1. key-value键值对型 redis

  2. Document 文档型 MongoDB

  3. Graph 图类型 neo4j

  4. 列类型 HBase

image-20230908150226160

事务特性

base

redis简介

基于内存的键值型NoSQL数据库

特征

  • 键值型

  • 单线程 redis6.0 对网络请求处理这一块是多线程的

  • 低延迟 速度快(基于内存 ,基于IO多路复用、良好的编码)

  • 支持数据持久化

  • 支持主从集群、分片集群

  • 支持多语言客户端

Redis启动

 //指定启动的文件conf启动
 redis-server /myredis/redis7.conf
 
 //可以查看redis服务
 
 ps -ef|grep redis|grep -v grep
 
 //6379为默认的端口号
 redis-cli -a 000000 -p 6379
 -p 6379 可以去掉
 或者执行
 redis-cli
 auth 000000
 
 输入ping 如果输出pong 则启动成功
 
 //在redis客户端上
 SHUTDOWN 关闭服务
 
 //远程关闭 单实例关闭
 redis-cli -a 000000 shutdown
 //多实例关闭
 redis-cli -p 6379 shutdown
 
 quit 退出

 

Redis通用命令

  • keys:查看符合模板的所有的key,不建议在生产环境设备上使用

  • DEL:删除一个指定的key

  • EXISTS:判断key是否存在

  • EXPIRE:给key设置有效期,有效期到期时key会自动删除

  • TTL:查看一个key的剩余有效期

Redis数据类型

String类型

普通字符串类型 字符串类型的最大空间不能超过512M

常见的操作命令

  • SET

  • GET

  • MSET:批量添加多个String类型的value

     MSET k1 v1 k2 v2 k3 v3
  • MGET: 根据多个key获取多个String类型的键值对

     MGET k1 k2 k3
  • INCR:让一个整形的key自增1

     SET age 10
     INCR age
  • INCRBY:让一个整型的key自增指定步长

     //自增2
     INCRBY age 2
     //自减
     INCRBY age -1
  • INCRBYFLOAT:让一个浮点类型的数字自增并指定步长

     INCRBYFLOAT age 0.5
  • SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行

     SETNX name2 ads

     

  • SETEX:添加一个String类型的键值对,并且指定有效期

     SETEX name 10 jack
     //相当于
     SET name jack EX 10

     

key的层级格式

 set user:llt:1 '{"id":1,"name":"lwx"}'
 set user:llt:2 '{"id":2,"name":"llt"}'
 set user:lwx '{"id":1,"name":"lwx"}'

效果如下:

image-20230909152634793

Hash类型

存储结构

image-20230909153214087

常见的操作命令

  • HSET key field value

     HSET lwx:user:3 name lwx
     HSET lwx:user:3 age 23
     HSET lwx:user:3 age 24

    image-20230909153645229

  • HGET key field

  • HMSET:批量添加多个hash类型key的field值

  • HMGET

  • HGETALL:获取一个hash类型的key中所有的field和value

  • HKEYS:获取一个hash类型的key中所有的field

  • HVALS:获取一个hash类型的key中所有的value

  • HINCERBY:让一个hash类型的key的字段值自增并指定步长

  • HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行

List类型

与java中LinkedList类似,可以看作时一个双向链表结构

特征

  • 有序

  • 元素可以重复

  • 擦汗如和删除快

  • 查询速度一般

常见命令

  • LPUSH key element:像列表左侧插入一个或多个元素

  • LPOP key :一处并返回列表左侧的第一个元素,没有则返回nil

  • RPUSH key element:像列表右侧插入一个或多个元素

  • RPOP key:一处并返回泪飙右侧的第一个元素

  • LRANGE key star end :返回一段叫表内的所有元素

  • BLPOP和BRPOP :与LPOP和RPOP类似,只不过在列表没有元素时等待指定时间,而不是直接返回nil

SET类型

与java中的HashSet类似 可以看作是一个value为null的HashMap

特征:

  • 无序

  • 元素不可重复

  • 查找快

  • 支持交集、并集、差集等功能

常见命令:

单个集合:

  • SADD key member :项set中添加一个或多个元素

  • SREM key member :移除set中的指定元素

  • SCARD key :返回set中元素的个数

  • SISMEMBER key member :普安段一个元素是否存在于set中

  • SMEMBERS: 获取set中所有的元素

多个集合:

  • SINTER key1 key2:求key1和key2的交集

  • SDIFF key1 key2:求key1和key2的差集

    image-20230909161741173

  • SUNION key1 key2:求key1和key2的并集

SortetSet类型

每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表加hash表

特性

  • 可排序

  • 元素不重复

  • 查询速度快

常见的命令

  • ZADD key score member :添加一个或多个元素到sorted set,如果已经存在则更新score值

  • ZREM key member:删除sorted set 中的一个指定元素

  • ZSCORE key member:获取sorted set 中的指定元素的score值

  • ZRANK key member:获取sorted set 中的指定元素的排名

  • ZCARD key:获取 sorted set中的元素个数

  • ZCOUNT key min max:统计score值在给定范围内的所有元素的个数

  • ZINCRBY key increment member:让 sorted set中的指定元素自增,不成为指定的increment值

  • ZRANGE key min max:按照score排序后,获取指定排名范围内的元素。

  • ZRANGEBYSCORE key min max:按照score排序后,获取指定score范围内的元素

  • ADIFF、ZINTER、ZUNION:求差集、交集、并集

Posted on 2023-09-10 11:18  鱼忆七秒瓶中沙  阅读(3)  评论(0编辑  收藏  举报