1.什么是Redis
Redis是Remote Dictionary Server(远程数据服务)的缩写,由意大利人 antirez(Salvatore Sanfilippo) 开发的一款 内存高速缓存数据库。该软件使用C语言编写,它的数据模型为 key-value,它支持丰富的数据结构,比如 String list hash set sorted set。
可持久化,保证了数据安全。
缓存:
有两种类型 :数据缓存、页面缓存(smarty)
使用缓存可以减轻数据库的负载。
在开发网站的时候如果有一些数据在短时间之内不会发生变化,而它们还要被频繁访问,为了提高用户的请求速度/降低网站的负载,就把这些数据放到一个读取速度更快的介质上,该行为就称作对该数据的缓存动作。
该介质可以是文件
、数据库
、内存
,内存经常用于数据缓存。
页面缓存经常用在CMS内存管理系统里边
数据缓存经常会用在页面的具体数据里边
2. redis和memcache比较
Redis不仅仅支持简单的k/v类型的数据,同时还提供list(列表)
,set(集合)
,Sortedset(有序集合)
,hash(哈希表)
等数据结构的存储。
Redis支持master-slave(主—从)模式应用。
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Redis单个value的最大限制是1GB, memcached单个value只能保存1MB的数据。
3.redis操作
3.1 redis操作之key(键)
3.2 redis操作之string(字符串)
3.3 redis操作之hash(哈希)
3.4 redis操作之list(列表)
3.5 redis操作之set(集合)
3.2 string类型操作
string是redis最基本的类型
redis的string可以包含任何数据。包括jpg图片或者序列化的对象。
单个value值最大上限是1G字节。
如果只用string类型,redis就可以被看作加上持久化特性的memcache。
SET key value 设置key对用的值为string类型的value
MSET key1 key2 ... keyN 一次设置多个key值
MGET key1 key2 ... keyN 一次获取多个key值
INCR key 对key值做加加操作,并返回新的值
DECR key 对key值做减减操作,并返回新的值
INCRBY key integer 对key值做加(指定值)操作,并返回新的值
DECRBY key integer 对key值做减(指定值)操作,并返回新的值
APPEND key calue 给指定key的字符串值追加value
SUBSTR key start end 返回接去过的key的字符串值
incr(increament)对陌生或已有key(key的值必须为整型)进行累加1操作
实现网站计数器功能。
操作陌生变量:生成该key变量并取值为1,
操作已有的key变量:要求key的值必须为整型的
3.3 List类型操作
List类型其实就是一个双向链表。通过push
,pop
操作从链表的头部或者尾部添加删除元素。
这使得list既可以用作栈,也可以用作队列。
LPOP key 移除并返回列表key的头元素。
RPOP key 从list尾部删除元素,并返回删除的元素
LPUSH key string 在key对应list的头部添加字符串元素
RPUSH key string 在key对应list的尾部添加字符串元素
LLEN key 返回key对应list的长度,若key不存在则返回0,若key对应类型不是list返回错误
LRANGE key start end 返会指定区间内的元素,下标从0开始
LTRIM key start end 截取list,保留指定区间内元素
LSET key index value 设置list中指定下标的元素值
LREM key count value 从key对应list中删除count个和value相同的元素。count为0时删除全部
BLPOP key [key ...] timeout
BLPOP 是列表的阻塞式(blocking)弹出原语。
它是 LPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,
连接将被 BLPOP 命令阻塞,直到等待超时或发现可弹出元素为止。
当给定多个key参数时,按参数key的先后顺序依次检查各个列表,
弹出第一个非空列表的头元素。
BRPOP key [key ...] timeout
BRPOP 是列表的阻塞式(blocking)弹出原语。
它是 RPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,
连接将被 BRPOP 命令阻塞,直到等待超时或发现可弹出元素为止。
当给定多个key参数时,按参数key的先后顺序依次检查各个列表,
弹出第一个非空列表的尾部元素。
BRPOP 除了弹出元素的位置和 BLPOP 不同之外,其他表现一致。
LINSERT key BEFORE|AFTER pivot value
将值value插入到列表key当中,位于值pivot之前或之后。
当pivot不存在于列表key时,不执行任何操作。
当key不存在时,key被视为空列表,不执行任何操作。
返回值:
如果key不是列表类型,返回一个错误。
如果命令执行成功,返回插入操作完成之后,列表的长度。
如果没有找到pivot,返回-1。
如果key不存在或为空列表,返回0。
LINDEX key index
返回列表key中,下标为index的元素。
如果index参数的值不在列表的区间范围内(out of range),返回nil。