Redis入门
[TOC]
简介
Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。其主要特点有:
- Redis将其数据库完全保存在内存中,仅使用磁盘进行持久化。(内存数据库)
- 与其它键值数据存储相比,Redis有一组相对丰富的数据类型。
- Redis可以将数据复制到任意数量的从机中。
为啥我们要用redis,希望下面的优点能说服你:
- 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。
- 支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等。这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决。
- 操作具有原子性 - 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。
- 多实用工具 - Redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等。
安装
从官网下载最新stable(稳定)版。放到linux服务器上。
按照如下命令安装
123456789tar -zvxf redis-3.2.8.tar.gz #解压安装包cd redis-3.2.8make /#编译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 #新开一个窗口并启动客户端如果是远程主机连接的话
1redis-cli -h host -p port -a password将redis启动为后台服务(设置redis.conf并修改daemonize的值)
1daemonize yes #设置为后天进程,默认为no
基本数据类型的操作
字符串操作(详细操作可以参考官方文档或者教程)
Redis字符串命令用于管理Redis中的字符串值。以下是使用Redis字符串命令的基本语法:
123456SET mykey "redis" #设置key-value对ex:SET key value # 此命令设置指定键的值。GET key # 获取指定键的值。GETRANGE key start end # 获取存储在键上的字符串的子字符串。GETSET key value # 设置键的字符串值并返回其旧值。
List操作(可以存在相同元素,如果需要不能存在相同元素则可以使用Set操作)
在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。
123456789lpush 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亿个键-值对。
12345hset map1 name zs #向map1的hash表中加入key-valueHDEL key field2 [field2] #删除一个或多个哈希字段。HEXISTS key field #判断是否存在散列字段。HGET key field #获取存储在指定键的哈希字段的值。HGETALL key #获取存储在指定键的哈希中的所有字段和值Set操作
Redis集合是唯一字符串的无序集合。 唯一值表示集合中不允许键中有重复的数据。在Redis中设置添加,删除和测试成员的存在(恒定时间O(1),而不考虑集合中包含的元素数量)。列表的最大长度为
2^32 - 1
个元素12345678SADD myset "redis" #添加到setSMEMBERS "myset" #获取myset所有元素SCARD key #获取集合中的成员数SDIFF key1 [key2] # 减去多个集合SDIFFSTORE destination key1 [key2] # 减去多个集并将结果集存储在键中SINTER key1 [key2] # 相交多个集合SINTERSTORE destination key1 [key2] # 交叉多个集合并将结果集存储在键中SISMEMBER key member # 判断确定给定值是否是集合的成员