Redis入门

Redis入门

[TOC]

简介

​ Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。其主要特点有:

  • Redis将其数据库完全保存在内存中,仅使用磁盘进行持久化。(内存数据库)
  • 与其它键值数据存储相比,Redis有一组相对丰富的数据类型。
  • Redis可以将数据复制到任意数量的从机中。

​ 为啥我们要用redis,希望下面的优点能说服你:

  • 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。
  • 支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等。这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决。
  • 操作具有原子性 - 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。
  • 多实用工具 - Redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等。

安装

  1. 官网下载最新stable(稳定)版。放到linux服务器上。

  2. 按照如下命令安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    tar -zvxf redis-3.2.8.tar.gz #解压安装包
    cd redis-3.2.8
    make /#编译c源码(需要先安装gcc编译器)
    make PREFIX=/usr/local/redis install #安装到指定目录下,一般Linux的软件习惯装载/usr/local下面
    cp redis.conf /usr/local/redis/ #复制解压目录下的配置文件到redis安装目录
    bin/redis-server redis.conf #启动redis服务并指定配置文件
    ./redis-cli #新开一个窗口并启动客户端
  3. 如果是远程主机连接的话

    1
    redis-cli -h host -p port -a password

    将redis启动为后台服务(设置redis.conf并修改daemonize的值)

    1
    daemonize yes #设置为后天进程,默认为no

基本数据类型的操作

  • 字符串操作(详细操作可以参考官方文档或者教程

    Redis字符串命令用于管理Redis中的字符串值。以下是使用Redis字符串命令的基本语法:

    1
    2
    3
    4
    5
    6
    SET mykey "redis" #设置key-value对
    ex:
    SET key value # 此命令设置指定键的值。
    GET key # 获取指定键的值。
    GETRANGE key start end # 获取存储在键上的字符串的子字符串。
    GETSET key value # 设置键的字符串值并返回其旧值。

  • List操作(可以存在相同元素,如果需要不能存在相同元素则可以使用Set操作)

    在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    lpush list1 "forever" #向list1中加入
    lpush list1 "cll" #向list1中加入
    lpush list1 "wifi" #向list1中加入
    LLEN key #获取列表的长度
    LPOP key #删除并获取列表中的第一个元素
    LPUSH key value1 [value2] #将一个或多个值添加到列表
    LPUSHX key value #仅当列表存在时,才向列表添加值
    LRANGE key start stop #从列表中获取一系列元素
    LREM key count value #从列表中删除元素
  • Hash操作

    Redis Hashes是字符串字段和字符串值之间的映射。 因此,它们是表示对象的完美数据类型。在Redis中,每个哈希(散列)可以存储多达4亿个键-值对。

    1
    2
    3
    4
    5
    hset map1 name zs #向map1的hash表中加入key-value
    HDEL key field2 [field2] #删除一个或多个哈希字段。
    HEXISTS key field #判断是否存在散列字段。
    HGET key field #获取存储在指定键的哈希字段的值。
    HGETALL key #获取存储在指定键的哈希中的所有字段和值
  • Set操作

    Redis集合是唯一字符串的无序集合。 唯一值表示集合中不允许键中有重复的数据。在Redis中设置添加,删除和测试成员的存在(恒定时间O(1),而不考虑集合中包含的元素数量)。列表的最大长度为2^32 - 1个元素

    1
    2
    3
    4
    5
    6
    7
    8
    SADD myset "redis" #添加到set
    SMEMBERS "myset" #获取myset所有元素
    SCARD key #获取集合中的成员数
    SDIFF key1 [key2] # 减去多个集合
    SDIFFSTORE destination key1 [key2] # 减去多个集并将结果集存储在键中
    SINTER key1 [key2] # 相交多个集合
    SINTERSTORE destination key1 [key2] # 交叉多个集合并将结果集存储在键中
    SISMEMBER key member # 判断确定给定值是否是集合的成员