zoukankan      html  css  js  c++  java
  • redis

      转自菜鸟教程

    一、简介

    redis是一个高性能的key-value的数据库,redis有如下特点:

    • 支持数据持久化,可以将内存中的数据持久化到磁盘中,重启的时候可以继续使用。
    • 不仅支持简单的key-value类型的数据,还支持list、set、zset(sorted set有序集合)、hash等类型数据
    • 支持数据的备份,即master-slave模式的数据备份。

    redis的所有操作都是原子性的,可以对几个操作合并后的原子性执行,Redis还支持 publish/subscribe, 通知, key 过期等等特性。

    二、redis数据类型

      1、String字符串

      string是redis最基本数据类型,类似于memcached key=>value式。String类型是二进制安全的,意味着redis的string可以包含任何数据包括jpg图片或者序列化的对象

      string类型是redis最基本的数据类型,一个键最大能存储512M。

      例:

    >SET name "test"
    OK
    >GET name
    "test"

      2、Hash(哈希)

      redis hash是键值对集合

      redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象

      例:

    redis 127.0.0.1:6379> HMSET user:1 username w3cschool.cc password w3cschool.cc points 200
    OK
    redis 127.0.0.1:6379> HGETALL user:1
    1) "username"
    2) "w3cschool.cc"
    3) "password"
    4) "w3cschool.cc"
    5) "points"
    6) "200"
    redis 127.0.0.1:6379>

      实例中我们使用了 Redis HMSET, HGETALL 命令,user:1 为键值。每个 hash 可以存储 232 - 1 键值对(40多亿)。

      3、List(列表)

      Redis列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头部(左边)或者尾部(右边)

      例:

    redis 127.0.0.1:6379> lpush w3cschool.cc redis
    (integer) 1
    redis 127.0.0.1:6379> lpush w3cschool.cc mongodb
    (integer) 2
    redis 127.0.0.1:6379> lpush w3cschool.cc rabitmq
    (integer) 3
    redis 127.0.0.1:6379> lrange w3cschool.cc 0 10
    1) "rabitmq"
    2) "mongodb"
    3) "redis"
    redis 127.0.0.1:6379>

      列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

      4、Set(集合)

      redis的Set是string类型的无序集合,不允许重复,集合是通过哈希表实现的,所以添加、删除、查找复杂度都是O(1)

      sadd命令将一个string元素添加到key对应的set集合中,成功返回1,如果元素已经在集合中则返回0,key对应的set不存在返回错误

    sadd key member

      例:

    redis 127.0.0.1:6379> sadd w3cschool.cc redis
    (integer) 1
    redis 127.0.0.1:6379> sadd w3cschool.cc mongodb
    (integer) 1
    redis 127.0.0.1:6379> sadd w3cschool.cc rabitmq
    (integer) 1
    redis 127.0.0.1:6379> sadd w3cschool.cc rabitmq
    (integer) 0
    redis 127.0.0.1:6379> smembers w3cschool.cc
    
    1) "rabitmq"
    2) "mongodb"
    3) "redis"

      

      注意:以上实例中 rabitmq 添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。

      集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

      5、zset(有序集合)

      zset与set一样是string类型的集合,不允许重复。不同的是每个元素都会关联double类型的分数。redis正是通过分数来为集合中的成员从小到大排序,zset的成员是唯一的,但分数可以重复

      zadd命令添加元素到集合,元素在集合中存在则更新对应的score

      

    zadd key score member 

      例:

    redis 127.0.0.1:6379> zadd w3cschool.cc 0 redis
    (integer) 1
    redis 127.0.0.1:6379> zadd w3cschool.cc 0 mongodb
    (integer) 1
    redis 127.0.0.1:6379> zadd w3cschool.cc 0 rabitmq
    (integer) 1
    redis 127.0.0.1:6379> zadd w3cschool.cc 0 rabitmq
    (integer) 0
    redis 127.0.0.1:6379> ZRANGEBYSCORE w3cschool.cc 0 1000
    
    1) "redis"
    2) "mongodb"
    3) "rabitmq"
  • 相关阅读:
    BNU 51002 BQG's Complexity Analysis
    BNU OJ 51003 BQG's Confusing Sequence
    BNU OJ 51000 BQG's Random String
    BNU OJ 50999 BQG's Approaching Deadline
    BNU OJ 50998 BQG's Messy Code
    BNU OJ 50997 BQG's Programming Contest
    CodeForces 609D Gadgets for dollars and pounds
    CodeForces 609C Load Balancing
    CodeForces 609B The Best Gift
    CodeForces 609A USB Flash Drives
  • 原文地址:https://www.cnblogs.com/orlion/p/5195923.html
Copyright © 2011-2022 走看看