• Nosql简介及redis介绍、使用方法


    ①-nosql简介

    NoSQL,指的是非关系型的数据库。

    常见的nosql产品有哪些?

    redis、memcache、mongodb

    nosql产品两个显著的特点:

    nosql产品一般不使用严格的表结构(行和列的组成形成一个表)
    nosql产品的数据的查询一般都不在使用sql查询
    网站:http://nosql-database.org/ 列出世界上正在使用的产品

    ②-常见的nosql产品比较

    ③-redis简介

    redis是一个key-value的nosql产品,和Memcached类似,但它储存的value类型相对更加丰富,包括string(字符串)、list(链表)、set(集合)、zset(sorted set有序集合)和hash,与memcached一样,为保证效率,数据都是缓存在内存库中,区别的是redis会周期性的把内存中的数据写入到硬盘中(被称为数据持久化),同时由于redis支持的是value类型众多,也被称为结构化的nosql数据库。

    网站:http://redis.io

    ④-redis的安装

    1.安装包的选择(选择合适的版本)


    2.复制并解压该安装包到一个非中文和非空格的文件夹下即可
    文件名解析:
    redis.conf : redis配置文件
    redis-benchmark.exe : 对redis做压力检测的命令
    redis-check-aof.exe / redis-check-dump.exe : 对redis的日志文件做检测的命令
    redis-cli.exe : redis的客户端命令
    redis-server.exe : redis服务端的启动命令

    3.启动redis服务(需要在windows的命令行下进行,并且要以超级管理员的身份启动cmd
    >d:
    >cd redis
    >dir
    >redis-server.exe
    出现下图则启动成功:


    默认启动端口是: 6379
    注:在windows下启动redis服务后,会占据这个窗口,需要终止redis的服务,需要使用ctrl + c 从即可

    简单操作(需要使用redis的客户端命令来连接redis的服务器端)
    >d:
    >cd redis
    >redis-cli.exe
    >ipconfig(查看ip地址)
    >redis-cli.exe -h (ip地址) -p (默认端口号)
    >get name asion
    >get name

    ⑤-redis的数据类型

    string类型

    1). 设置value

    2). 获取value

    3). incr 做自增操作,可以对某个key的value进行+1的操作

    4). decr 做自减操作,可以对某个key的value进行-1的操作

    5). incrby指定自增的数字

    6). decrby指定自减的数字

    7). keys命令获取redis里面的所有key

    redis的key是如何设计的?

    思考:原先在mysql里面的数据是如何存储的?
    答:使用it_user表(行和列的组合)

    如果把上面mysql表里面的数据存储到redis里面,存储的key该如何设计?
    答:分以下几步操作:

    a:把mysql里面的表名获取redis里面的key的前缀(it_user前缀)
    b:把mysql表里面的主键名称放在上面的前缀后面,一般使用冒号分割(it_user:id)
    c:对应记录的主键值做key的第三步(it_user:id:1)
    d:把mysql里面的其他的字段作为key的第四部分(it_user:id:1:username)

    把上面mysql表里面的记录保存到redis

    获取用户的信息,例如要获取用户id为1的信息

    hash类型

    redis里面的hash类型有点类似php里面的关联数组
    1.hset设置单个值


    2.hget获取值


    3.hmset设置多个值


    4.hgetall获取hash里面全部值

    list类型

    redis里面的list类型被称为链表类型的概图


    1.lpush 向链表的头部放入数据


    2.rpush向链表的尾部放入数据


    3.lrange获取链表里面的数据

    4.lpop在链表的左侧弹出第一个数据


    5.rpop在链表的右侧弹出最后一个数据

    6.链表数据结构在实际项目中有哪些地方可以使用?
    答:例如,后台要统计一下最近登录的是个用户,如果使用mysql来完成,形成这条sql来查询数据:
    sql:select * from user order by logintime desc limit 10;

    换成redis里面的链表实现:创建一个list类型,从链表的左侧加入最近登录的用户主键id;
    当里面的单元超过10个后,只需要把最右侧的那个单元弹出即可

    set类型

    redis里面的set类型被称为无序集合类型
    集合是数学里面常见的一个概念,可以理解是一类数据的集合,
    集合满足三个特点:
    a.无序性:集合里面的数据没有顺序之分
    b.唯一性:集合里面的数据彼此不能重复
    c.确定性:集合里面的数据的个数是确定的

    集合概图:

    集合常见的运算:
    交集(∩):集合公共的部分:例如上面集合A和集合B的交集是 2
    并集(∪):集合全部的部分:例如上面集合A和集合B的并集是 1 2 3
    差集(A-B):A-B代表的含义是元素在A里面出现,但元素不能在B里面出现:例如上面集合A-集合B结合是 1

    1.sadd向集合里面添加元素


    2.smember 获取集合里面的元素


    3.srem移除集合里面的某个元素


    4.spop随机弹出集合里面的元素


    5.集合的一个实际使用场景
    答:一般redis里面的集合被用在社交型的网站里面做好友关系的展示。
    例如实现好友的推荐,共同好友

    案例:
    a.设计四个用户(key的设计参照一般key的设计思路)

    b.设计好友的集合
    用户id为3的用户好友集合里面有1 和 2 :代表含义是3号用户有两个好友


    用户id为45的用户好友集合里面的数据是: 2 :代表含义是45号用户有一个好友

    c.求取好友关系
    1). 获取3号和45号的共同好友(求交集)


    2). 获取3号和45号的全部好友(求并集)


    3). 让3号用户给45号用户推荐好友(求差集)

    zset类型

    redis里面的zset类型被称为有序集合类型,意味有序集合里面的元素是排好序的,也满足唯一性和确定性

    有序集合概图:

    1.zadd添加元素


    2.zrange获取集合里面的元素


    3.获取集合内容的时候显示权重信息

    我是一个刚刚开始写博客的大可,内容有不详细或是错误的,还希望各位大佬私信我,我会进行纠正,谢谢啦!^-^
  • 相关阅读:
    vue-cli+webpack打包,上线
    vue2.0搭建vue手脚架(vue-cli)
    vue -- vue-cli webpack项目打包后自动压缩成zip文件
    Java字符串和常用类
    Java基础
    TF-IDF与TextRank的关键词提取算法应用
    ACl2019|使用Graph-to-Sequence模型为中文文章生成连贯的评论
    ACL2019|巧用文本语境信息:基于上下文感知的向量优化
    探索四川奥秘
    手机浏览器通过Scheme跳转APP,兼容各种手机浏览器
  • 原文地址:https://www.cnblogs.com/sunjiaojiao/p/11162557.html
Copyright © 2020-2023  润新知