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"
  • 相关阅读:
    第八章 用通配符进行过滤
    第七章 数据过滤
    第六章 过滤数据
    第五章 排序和检索数据
    第四章 检索数据
    MySql 首记
    Effective C++ 6.继承与面向对象设计
    Effective C++ 5.实现
    ~~函数基础(五):内置函数~~
    ~~函数基础(四):递归函数~~
  • 原文地址:https://www.cnblogs.com/orlion/p/5195923.html
Copyright © 2011-2022 走看看