zoukankan      html  css  js  c++  java
  • 非关系型数据库Redis学习(1)

    NoSQL 泛指非关系型数据库

    特点:1.处理超大量的数据

       2.运行在便宜的pc服务器集群上

        3.击碎了性能的瓶颈

    Redis是一个高性能的key-value数据库,存储的value类型包括string字符串、list链表、set(集合)、zset(有序集合)。数据缓存在内存中,也可以周期性的把更新的数据写入磁盘,或把修改的操作写入追加的记录文件中

    Redis使用场合

    1. application -> Redis

    2. 应用程序直接访问Redis,只有当Redis访问失败时,才访问mysql 

    Redis具体的使用场景

    1.取最新的N个数据

    2.排行榜应用,去TOPn操作

    3.需要精确设定过期时间的应用

    4.计数器应用

    5.unique操作 获取某段时间所有排重值

    6.实时系统,反垃圾系统

    7.pub/sub构建实时消息系统 独有的发布与订阅

    8.构建队列系统

    9.缓存

    Redis服务端的默认连接端口为6379

    Mysql服务器的默认连接端口为3306

    string类型

    set 设置key对应的值为string类型的value

    setnx nx是not exit 的意思。如果key已经存在则返回0

    setex 设置key对应的值为string类型的value,并指定此键值对应的有效期

    setrange 设置指定key的value值的子字符串 setrange name 6 126.com 将antik@qq.com 替换成antik@126.com 

    mset 一次设置多个key的值 成功返回ok 失败返回0 表示任何值没有被设置

    get 获取key对应的string值

    getset 设置key的值 并返回旧值

    getrange 获取子字符串    getrange name 0 5

    mget 批量获取

    incr 递增

    incrby同incr类似 加指定的值  key不存在时侯会设置key 并认为原来的value为0

    decr 同上面 自减

    decrby

    append 给指定的key追加value 返回新字符串长度

    strlen 取指定key的value的长度

    hashes类型

    Redis hash 是一个string类型的field(字段)和value(值)的映射表 hash特别适合于存储对象

    hset 设置hash field为指定值,如果key不存在,则先创建   hset user:001 name dz

    hsetnx 设置hash field为指定的值 key 不存在则创建 存在则返回0

    hmset 批量设置

    hmget 批量获取

    hincrby 同上面的incrby

    hexists 测试指定field是否存在 存在则返回1 不存在则返回0

    hlen 返回指定hash的field数量

    hdel 删除指定hash的field

    hkeys 返回hash的所以field

    hvals 返回hash的所有val

    hgetall 获取hash中全部的field和value

    lists类型

    list是一个链表结构。 主要功能是push pop 获取一个范围的所有值等。list既可以作为栈,又可以作为队列。Redis的list类型其实是每一个子元素都是string类型的双向链表。

    lpush 在key对应list的头部添加字符串元素

    lrange lrange mylist 0 -1 代表从头到尾依次全部取出表

    rpush 从尾部添加元素

    linsert 在key对应list的特定位置前后添加字符串    linsert mylist before "one" "three"

    lset 设置list中指定下标的元素值    lset mylist 0 "world"

    lrem 从key对应list中删除N个和value相同的元素  (n<0 从尾删除  n=0 全部删除)

    ltrim 保留指定key的值范围内的数据

    lpop 从list头部删除元素,并返回删除的元素

    rpop 从list尾部删除元素

    rpoplpush 从第一个list尾部移除元素并添加到第二个list头部    rpoplpush mylist1 mylist2

    lindex 返回名称为key的list中index位置的元素

    llen 返回key对应list的长度

    Sets类型

    set是集合,是string类型的无序集合

      对集合可以取并集、交集、差集,通过这些操作,我们可以实现SNS中的好友推荐和blog的tag功能

    Sadd 向名称为key的set中添加元素

    Srem 把集合中的元素删除

    Spop 随机返回并删除名称为key的set中一个元素

    Sdiff 两个集合的差集    sdiff myset1 myset2 哪个在前就以哪个为标准

    Sdiffstore   sdiffstore myset3 myset1 myset2 将差集存到myset3中

    Sinter 交集

    Sinterstore 将交集存到另一个集合中

    Sunion 返回所有给定key的并集

    Sunionstore 将并集的内容存到一个新的集合中

    Smove 从第一个key对应的set中移除member并添加到第二个对应的set中  Smove myset2 myset3 1 将myset2中的1移到myset3中

    Scard 查看集合元素个数

    Sismember 测试某个元素是否是集合中的元素  Sismember myset 1 判断1是否在myset中的元素

    Sorted sets 类型 有序集合

    Sorted sets 是sets的一个升级版本,在set的基础上增加了一个顺序属性,可以理解为有两列的mysql表。一列存value,一列存顺序。

     zadd 向有序集合添加元素  zadd myset 1 "one"

    zrange myset 0 -1 取出集合中的元素

    zrange myset 0 -1 with scores 取出元素和顺序号

    zrem 删除

    zincrby 对顺序指定增加

    zrank 返回名称为key的zset中members元素的排名 按下标从小到大排序

    zrevrank rev代表反转 按下标从大到小排序

    zrevrange 降序排序

    zrangebyscore  zrangebyscore myset 2 3 with scores  给一个范围的元素排序

    zcount 返回集合中score在给定区间的数量

    zcard 返回集合中元素个数

    zremrangebyrank 删除集合中排名在给定区间的元素(按索引删除)

    zremrangebyscore 按顺序删除

  • 相关阅读:
    ubuntu 1510
    创业者的困境
    创业者的窘境
    (转)Ubuntu 16.04下搭建Web服务器(MySQL+PHP+Apache)
    ESP8266的smartconfig过程(使用esptouch)
    Virtualbox下ubuntu识别USB设备
    红外人体检测
    树莓派跑讯飞语音识别(2麦阵列)
    R16平台中断
    语音识别下的智能家居
  • 原文地址:https://www.cnblogs.com/antik/p/4701755.html
Copyright © 2011-2022 走看看