Redis

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操作

redis命令手册
redis命令参考
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。

推荐阅读更多精彩内容

  • redis主题 01_Redis介绍和安装运行02_Jedis的介绍和使用03_Redis数据类型和数据操作的命令...
  • 本文将从Redis的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍。之后概...
    kelgon阅读 59,182评论 24 623
  • 《Redis 入门指南》(第二版) 第一章 Redis 是什么 Redis (REmote Dictionary ...
    EdenPP阅读 66,997评论 3 10
  • 我是那种典型的人们口中的乖乖女,好脾气,强耐力,只要不违法乱纪,有求必应,温柔版的马大姐。现在想想那时候咋活的...
    陈旧啊阅读 188评论 7 5
  • 今天早上我七点半到这学校,早上一到学校,就看着我们班儿同学都在收拾东西。大约过了五分钟,我们就排队下去升国旗...
    杨帛翰阅读 102评论 0 0
  • 我的人生,我只想任性的,做回主。 可在别人看来,我应该是另外一番模样。 人生有太多有意义的事,我不想一直纠结于眼前...
    和小白的约定阅读 44评论 0 1
  • 再见的曲断人终,思念的守望海角,曲断人终的挂牵,人海相逢的缘断,只是勾画的墨笔,敲响最初的天堂! 当,我的思绪在进...
    酒浓情伤阅读 100评论 0 0