string

  • 字符串常用操作

    1.存入字符串键值对

     SET key value

    2.批量存储字符串键值对

     MSET key value [key value ...]

    3.获取一个字符串键值

     GET key

    4.批量获取字符串键值

     MGET key [key ...]

    5.删除一个键

     DEL key [key ...]

    6.设置一个键的过期时间(秒)

     EXPIRE key seconds
  • 原子加减

    1.将key中存储的数字值加一

     INCR key

    2.将key中存储的数字值减一

     DECR key

    3.将key所存储的值加上increment

    INCRBY key increment

    4.将key所存储的值减去decrement

    DECRBY key decrement
  • 单值缓存

    SET key value

    GET key

  • 对象缓存

    1.SET user:1 value(json格式数据)

    2.MSET user:1:name test user:1:balance 10086

    MGET user:1:name user:1:balance
  • 分布式锁

    SETNX product:10001 true 			//返回1代表获取锁成功
    SETNX product:10001 true //返回0代表获取锁失败
    ....执行业务操作
    DEL product:10001 //执行完业务释放锁 SET product:10001 true ex 10 nx //防止程序意外终止导致死锁

      

  • 计数器

    INCR article:readcount:{文章id}

    GET article:readcount:{文章id}

  • Web集群session共享

    spring session + redis 实现session共享

  • 分布式系统全局序列号

    //redis批量生成序列号提升性能
    INCRBY orderId 1000

hash

  • hash常用操作

    1.存储一个哈希表key的键值

    HSET key field value

    2.获取一个不存在的哈希表key的键值

    HSETNX key field value

    3.在一个哈希表key中存储多个键值对

    HMSET key field value [field value ...]

    4.获取哈希表key对应的field键值

    HGET key field

    5.批量获取哈希表key中多个field键值

    HMGET key field [field ...]

    6.删除哈希表key中的field键值

    HDEL key field [field ..]

    7.返回哈希表key中field数量

    HLEN key

    8.返回哈希表key中所有的键值

    HGETALL key

    9.为哈希表key中field键的值加上增量increment

    HINCRBY key field increment
  • 对象缓存 (类似map)

    HMSET user {userId}:name test {userId}:age 10
    
    HMGET user 1:name 1:age

list

  • list常用操作

    1.将一个或多个值value插入到key列表的表头(最左边)

    LPUSH key value [value ...]

    2.将一个或多个值value插入到key列表的表尾(最右边)

    RPUSH key value [value ...]

    3.移除并返回key列表的头元素

    LPOP key

    4.移除并返回key列表尾头元素

    RPOP key

    5.返回列表key中指定区间内的元素,区间以偏移量start和stop指定

    LRANGE key start stop

    6.从key列表表头弹出一个元素,若列表中没有元素,阻塞则等待timeout秒,如果timeout=0,一直阻塞等待

    BLPOP key [key ...] timeout

    7.从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待

    BRPOP key [key ...] timeout

set

  • set 常用操作

    1.往集合key中存入元素,元素存在则忽略,若key不存在则新建 SADD key member [member ...]

    2.从集合key中删除元素 SREM key member [member ...]

    3.获取集合key中的所有元素 SMEMBERS key

    4.获取集合key的元素个数 SCARD key

    5.判断member元素是否存在于集合key中 SISMEMBER key member

    6.从集合key中选出count个元素,元素不从key中不删除 SRANDMEMBER key [count]

    7.从集合key中选出count个元素,元素不从key中删除 SPOP key [count]

  • set运算操作

    1.交集运算 SINTER [key ...]

    2.将交集结果存入新集合destination中 SINTERSTORE destination key [key ...]

    3.并集运算 SUNION key [key ...]

    4.将并集结果存入新集合destination中 SUNIONSTORE destination key [key ...]

    5.差集运算 SDIFF key [key ...]

    6.将差集结果存入新集合destination中 SDIFFSTORE destionation key [key ...]

sorted Set(zSet)

  有序集合(sorted set)和集合(set)都不允许重复的成员;不同的是每个元素都会关联一个double类型的分数;redis正是通过分数来为集合中的成员进行从小到大的排序;有序集合的成员是唯一的,但分数(score)却可以重复;zSet的api与Set的api大致相同;

  1.向有序集合添加一个或多个成员,或者更新已存在成员的分数

     ZADD key score1 member1 [score2 member2] 2.通过索引区间返回有序集合指定区间内的成员 ZRANGE key start stop [WITHSCORES]

  3.移除有序集合中的一个或多个成员

     ZREM key member [member ...]

  4.通过分数返回有序集合指定区间内的成员

     ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]

  5.返回有序集合中指定成员的索引

     ZRANK key member,其中member按score值递增(从⼩到⼤)

关于NOSQL的优势

  非关系型数据库,数据与数据之间没有关联关系。就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题;

  类型

    1. 键值(key-value)存储数据库
    2. 列存储数据库:键仍然存在,但是指向了多个列,HBase (eg:博客平台(标签和文章),日志)
    3. 文档型数据库 MongoDb (eg:淘宝商品的评价)
    4. 图形数据库 Neo4j (eg:好友列表)

 

  扩展:

    MongoDB是一个基于分布式文件存储的数据库。有C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案;

    MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系数据库当中功能最丰富,最像关系型数据库的;

    文档(document)是MongoDB中数据的基本单元,非常类似于关系型数据库系统中的行(但是比行要复杂的多);  
    集合(collection)就是一组文档,如果说MongoDB中的文档类似于关系型数据库中的行,那么集合就如同表;

  易扩展

  NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性;数据之间无关系,这样就非常容易扩展;也无形之间,在架构的层面上带来了可扩展的能力;

  大数据量,高性能

  NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单;一般MySQL使用Query Cache,每次表的更新Cache就失效,是一种大粒度的Cache,在针对web2.0的交互频繁的应用,Cache性能不高;而NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说就要性能高很多了;

  灵活的数据模型

  NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式;而在关系数据库里,增删字段是一件非常麻烦的事情;如果是非常大数据量的表,增加字段简直就是一个噩梦;这点在大数据量的web2.0时代尤其明显;

Redis五种常用数据类型的更多相关文章

  1. redis五种基本数据类型

    1.string类:一个key对应一个value(key:value).string类是二进制安全,可以包含任何数据(例如:图片.音乐). 2.hash类:string类型field和value的映射 ...

  2. redis五种数据类型的使用(zz)

    redis五种数据类型的使用 redis五种数据类型的使用 (摘自:http://tech.it168.com/a2011/0818/1234/000001234478_all.shtml ) 1.S ...

  3. redis五种数据类型的使用

    redis五种数据类型的使用 redis五种数据类型的使用 (摘自:http://tech.it168.com/a2011/0818/1234/000001234478_all.shtml ) 1.S ...

  4. redis五种数据类型的使用场景

    string 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...

  5. Redis五种数据类型-设置key的过期时间

    1.redis命令客户端 [root@localhost bin]# ./redis-cli 127.0.0.1:6379> #是否运行着 127.0.0.1:6379> ping PON ...

  6. Redis API与常用数据类型简介

    Redis API与常用数据类型简介 一.Redis API For .Net 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些 ...

  7. Redis(一)、Redis五种数据结构

    Redis五种数据结构如下: 对redis来说,所有的key(键)都是字符串. 1.String 字符串类型 是redis中最基本的数据类型,一个key对应一个value. String类型是二进制安 ...

  8. JavaScript 基础(一) - JavaScript的引入方式,JavaScript 变量命名规则,JS 的五种基本数据类型,ECMAScript 算数运算符,逻辑运算符

    JavaScript的引入方式 直接编写 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  9. js五种基本数据类型:string, number, boolean, null, undefined

    /** * 五种基本数据类型:string, number, boolean, null, undefined */ // undefined // 声明变量foo,未声明变量bar var foo; ...

随机推荐

  1. Window10 上MindSpore(CPU)用LeNet网络训练MNIST

    本文是在windows10上安装了CPU版本的Mindspore,并在mindspore的master分支基础上使用LeNet网络训练MNIST数据集,实践已训练成功,此文为记录过程中的出现问题: ( ...

  2. Docker 容器化部署 Python 应用

    Docker 是一个开源项目,为开发人员和系统管理员提供了一个开放平台,可以将应用程序构建.打包为一个轻量级容器,并在任何地方运行.Docker 会在软件容器中自动部署应用程序. 在本篇中,我将介绍如 ...

  3. zookeeper 笔记--curator分布式锁

    使用ZK实现分布式独占锁, 原理就是利用ZK同级节点的唯一性. Curator框架下的一些分布式锁工具InterProcessMutex:分布式可重入排它锁 InterProcessSemaphore ...

  4. @lookup注解的使用

    背景,如果有一个类C,需要用到类B,如果使用@Autowired注解注入B,那么B每次调用都是同一个对象,即使B不是单例的,现在我希望每次调用B都是不一样的,那么实现方案有2个: 方案A : 每次从容 ...

  5. 报表和仪表板在线设计器Stimulsoft Designer 最新版发布

    Stimulsoft Designer是统一的Stimulsoft框架的一部分,该框架包括用于生成报表和分析数据的引擎.报表设计器和查看器. 您可以在计算机上创建报表,继续使用在线设计器在云中对其进行 ...

  6. OpeMp【schedule】

  7. mysql-11-DML

    #DML语言 /* 数据操作语言 插入:insert 修改:update 删除:delete */ #一.插入语句 /* 语法: insert into 表名(列名...) values(新值...) ...

  8. 重拾H5小游戏之入门篇(二)

    上一篇,水了近千字,很酸爽,同时表达了"重拾"一项旧本领并不容易,还有点题之效果.其实压缩起来就一句话:经过了一番记忆搜索,以及try..catch的尝试后,终于选定了Phaser ...

  9. 【题解】[ZJOI2009]假期的宿舍

    \(\color{red}{Link}\) \(\text{Solution:}\) 把人和床看成点,问题转化为二分图. 于是,对于每一个在校生,我们建立出他的床点:然后对于每一个在校生,他们自己可以 ...

  10. JVM 第三篇:Java 类加载机制

    本文内容过于硬核,建议有 Java 相关经验人士阅读. 1. 什么是类的加载? 类的加载指的是将类的 .class 文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 ...