缓存数据库Redis的学习

一、数据库的发展史

①最开始是一个sql语句就访问一次数据库,这样使得我们的数据库负载很大。

②为了避免数据库负载过大,使用了缓存技术cache,在dao和db之间加上一层缓存,将我们常用的数据查询一次后都放入到缓存中。(主要针对于查询)

③随着时代的发展,数据库的写的压力变大了,出现了瓶颈,使用分布式数据库,一个数据库变为多个数据库,每个数据库存入不同的信息。

④再跟随着时代的发展,mysql的扩展性出现了瓶颈,越来越复杂的关系,例如:亲戚关系。关系型数据库已经承受不了了,所以衍生出来了nosql

二、什么是nosql?

not only sql 不仅仅是sql,泛指非关系型数据库(key-value)。

三、nosql的特点

易扩展,大数据量高性能,多样灵活的数据类型,新技术:redis

四、常见的数据库缓存框架:redis、memcache、mongdb

五、redis的特性:key-value,cache,persistence(持久化)

六、nosql的四大分类

①KV键值

②文档性数据库(bson格式比较多)

③列存储数据库④图关系数据库

七、分布式:不同的多台服务器上面部署着不同的服务模块(工程)

八、集群:不同的多台服务器上面部署相同的服务模块

九、什么是edis?

REmote DIctionary Server(远程字典服务器)。是一个高性能的(key/value)分布式内存数据库。

十、redis与其他key-value缓存产品有以下三个特点:

①redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
②redis不仅仅支持简单的key-value类型的数据,同时还提供list(列表),set(集合),zset(有序集合),hash等数据结构的存储
③redis支持数据的备份,即master-slave模式的数据备份

十一、redis的安装过程

windos安装教程:https://blog.csdn.net/a599174211/article/details/82756069

Linux安装教程:https://www.cnblogs.com/lauhp/p/8487029.html

十二、redis的基础知识(一)

①单进程
②默认有16个库,类似数组下标从0开始,初始默认使用0号库
③select命令是切换数据库 select 7 访问的是8号库
④Dbsize查看当前数据库的key的数量
⑤Flushdb清空当前的库
⑥Flushall清空所有的库
⑦统一密码管理,16个库都是同一个密码
⑧redis的索引都是从0开始
⑨默认端口号6379
命令解析:
    select 7 查看8号库
    dbsize查看当前库的key的数量
    keys * 查看当前库的所以的key
    keys k? ?类似mysql里面的占位符
    FLUSHdb 清除当前库

十二、redis的基础知识(二)

key关键字:
    keys *
    exists key值 判断某个key是否存在
    move key值 db名 将某个key移动到某个数据库中,当前数据库中的此key就不存在了
    expire key值 秒钟,为给定的key设置过期时间
    ttl key值 查看当前还有多少秒过期,,-1表示永不过期,-2表示已经过期,过期就不存在了。
    type key值 查看你的key是什么类型
①String
    String是redis的最基本的类型,一个key对应一个value,redis里面的String可以包含任何数据,比如序列化的东西,jpg的图片
  常用命令:
      set/get/del/append/strlen append k1 123
      Incr/decr/incrby/decrby,INCRby key1 2 自加自减代表自加1自减1 后面的是指定加减值,只能是数字才能进行加减
      getrange/setrang 获取指定区间内的值 GETRANGE k1 0 3 SETRANGE k1 0 xxx
      setex 键秒值 /setnx SETEX k2 10 v2 针对于k2里面的值的过期时间是10秒 setnx 命令在指定的 key 不存在时,为 key 设置指定的值
      mset/mget/msetnx mset k1 v1 k2 v2 k3 v3 mget k1 k2 k3 MSETNX k4 v4
      getset(先get再set) GETSET k1 v111
②Hash
    是一个键值对的集合,类似于我们的map<key,object>,kv模式不变,但v是一个键值对
  常用命令:
    hset/hget/hmset/hmget/hgetall/hdel ①hset user id 11 hget user id ②HMSET customer id 11 name lisi age 26 hmget customer id name age ③ HGETALL customer ④HDEL user name
    hlen HLEN customer
    hexists key 检测id是否是customer里面一个属性 HEXISTS customer id
    hkeys/hvals HKEYS customer Hvals customer
    hincrby/hincrbyfloat ①HINCRBY customer age 2 ②hset customer score 91.5 HINCRBYFLOAT customer score 0.5
    hsetnx hsetnx customer email 123@126.com
③List
    是列表,是简单的字符串列表,按照插入顺序排序,底层是一个链表,既然是一个链表,则可以操作头部和尾部
  常用命令:
    lpush/rpush/lrange LPUSH list01 1 2 3 4 5(先进后出) LRANGE list01 0 -1
    lpop/rpop lpop删除左侧的值(最上层的值),rpop删除右侧的值(最下层的值),
    lindex 按照索引下标获取元素(从上到下)
    llen LLEN list01
    lrem key 删除n个value LREM list01 1 3
    ltrim key 开始index 结束index,截取指定范围的值后再赋值给key LTRIM list01 0 2
    rpoplpush 源列表 目的列表 RPOPLPUSH list01 list02 将list01里面的最后一个值后添加到list02的头部,list01最后一个值就没了
    lset key index value LSET list03 1 x
    linsert key before/after 值1 值2 LINSERT list03 before x java 在x前面插入一个值为java
④Set
    是一个String类型的无序集合,它是通过hashtable实现的
  常用命令:
    sadd/smembers/sismember sadd set01 1 1 2 2 3 3 SMEMBERS set01 添加时是把重复的元素去掉了 SISMEMBER set01 1 判断元素是否存在于set01中
    scard 获取集合里面的元素个数 SCARD set01
    srem key value 删除集合中的某个元素 SREM set01 1
    srandmember key 某个整数(随机出几个数) SRANDMEMBER set01 5
    spop key 随机出栈 SPOP set01
    smove key1 key2 在key1里面某个值, 作用是将key1里的某个值赋给key2 SMOVE set01 set02 9
    数学集合类:
        差集:sdiff SDIFF set01 set02
        交集:sinter Sinter set01 set02
        并集:sunion Sunion set01 set02
⑤Zset
    有序集合,且不允许有重复的元素,不同的每个元素都会关联一个double类型的分数(score),分数可以重复,根据成员进行从小到大排序在set的基础上,加上了一个score,之前k1 v2 v3,现在是:k1 score1 v1 score2 v2
  常用命令:
      zadd/zrange zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5 ZRANGE zset01 0 -1 ZRANGE zset01 0 -1 withscores
      zrangebyscore key 开始score 结束score ZRANGEBYSCORE zset01 60 90 ZRANGEBYSCORE zset01 (60 90
      zrem key 某score下对应value值 作用是删除元素 ZREM zset01 v5
      zcard/zcount key score区间/zrank key values值 作用是获取下标值/zscore key 对应值 ZCARD zset01 ZCOUNT zset01 60 80 ZRANK zset01 v4(正序获取下标值)
      zrevrank key values值 作用是逆序获得下标值 Zrevrank zset01 v2
      zrevrange ZREVRANGE zset01 0 -1
      zrevrangebyscore key 结束score 开始score ZREVRANGEBYSCORE zset01 90 60

原文地址:https://www.cnblogs.com/zblwyj/p/11851447.html