文档:Redis高级应用.note
链接:http://note.youdao.com/noteshare?id=81f2ab61838b75ed5c938f74c22bff1d&sub=D225B90DF5CA4160939CBD2851687B4B
一、redis和memcached相比,的独特之处
1、redis可以持久化数据到硬盘,memcached只能做缓存。
redis可以用来做存储(storge),也就是redis可以将数据持久化到硬盘。 而memccached是用来做缓存(cache) 这个特点主要因为其有”持久化”的功能.
2、redis相比于memcached,其支持的数据类型更多。
存储的数据有”结构”,对于memcached来说,存储的数据,只有1种类型--”字符串”, 而redis则可以存储字符串,链表,哈希结构,集合,有序集合
二、redis的优点
1、读写速度快. 数据存放在内存中,数据结构类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
2、支持丰富的数据类型,string,hash,list,set,sorted
3、支持简单事务,watch
4、丰富的特性:可以用于缓存,消息队列按key设置过期时间,到期后自动删除
5、支持数据持久化(将内存数据持久化到磁盘),支持AOF和RDB两种持久化方式,从而进行数据恢复操作,可以有效地防止数据丢失
6、支持主从(master-slave)复制来实现数据备份,主机会自动将数据同步到从机
三、Redis目录下的重要文件的意义
1、redis-benchmark 性能测试工具
2、redis-check-aof 日志文件检测工(比如断电造成日志损坏,可以检测并修复)
3、redis-check-dump 快照文件检测工具,效果类上
4、redis-cli 客户端
5、redis-server 服务端
6、redis.windows.conf redis配置文件,在启动redis服务器的时候,必须要指定配置文件,那么相当于于一个配置文件就是一个redis数据库服务器。
redis服务器启动命令:
1 redis-server redis.windows.conf
四、redis基础命令
1、keys * //返回键(key)
2、keys list* //返回名以list开头的所有键(key)
3、exists list1 //判断键名为list1的是否存在 存在返回1, 不存在返回0
4、del list1 //删除一个键(名为list1)
5、expire list1 10 //设置键名为list1的过期时间为10秒后
6、ttl list1 //查看键名为list1的过期时间,若为-1表示已过期 或 永不过期
7、move age 1 //将键名age的转移到1数据库中。
8、select 1 //表示进入到1数据库中,默认在0数据库
9、persist age //移除age的过期时间。
10、flushdb:删除所有的数据 清除当前所在库的所有数据
11、flushall 清空所有数据
二、redis数据类型
1、String字符串
set——get
mset——mget
setnx——msetnx
incr——decr
incrby——decrby
setrange——getrange
set方法:设置key对应的值为string类型的value,如果该key已经存在,则覆盖key对应的value值。所以在redis中key只能有一个。
1 127.0.0.1:6379> set name lijie
get:根据key获取value值
1 127.0.0.1:6379> get name
Setnx:设置一个不存的字符串,返回0 表示设置失败,已存在。返回1 表示设置新值成功,nx是not exist的意思。
1 127.0.0.1:6379>setnx name zs2 (integer) 03 127.0.0.1:6379> setnx age 20
4 (integer) 1
setex:设置字符串,同时设置有效期。ex---expire(有效期)
1 127.0.0.1:6379> setex color 10red2 OK3 立即查询4 127.0.0.1:6379> get color"red"
5 10秒后查询6 127.0.0.1:6379>get color7 (nil)
Setrange:替换字符串——要替换什么, 从哪里开始(0), 替换成什么
1 127.0.0.1:6379>set email jalja@sina.com2 OK3 127.0.0.1:6379>get email4 "jalja@sina.com"
5 127.0.0.1:6379> setrange email 6 163.com6 (integer) 14
7 127.0.0.1:6379>get email8 "jalja@163.comm"
Mset:一次设置多个key-value,返回OK表示全部设置成功,返回0表示全部失败。如果存在则替换。m--multi
1 127.0.0.1:6379>mset name1 zs name2 ls2 OK3 127.0.0.1:6379>get name14 "zs"
5 127.0.0.1:6379>get name26 "ls"
msetnx:一次设置多个不存在的key-value,返回1表示全部设置成功,返回0表示全部失败。
1 127.0.0.1:6379>msetnx name3 kk name4 mm name2 LL2 (integer) 03 127.0.0.1:6379>get name34 (nil)5 127.0.0.1:6379>get name46 (nil)
getset:获取原值,并设置新值
1 127.0.0.1:6379>getset name4 UU2 (nil)3 127.0.0.1:6379>get name44 "UU"
5 127.0.0.1:6379>getset name4 RR6 "UU"
getrange:获取key对应value的子字符串
1 127.0.0.1:6379>get email2 "jalja@163.comm"
3 127.0.0.1:6379> getrange email 0 4
4 "jalja"
mget:一次获取多个key对应的value值,不存在返回nil
1 127.0.0.1:6379>mget name1 name2 name3 name4 name52 1) "zs"
3 2) "ls"
4 3) (nil)5 4) "RR"
6 5) (nil)
incr:对key对应的value做加1操作,并返回新值
1 127.0.0.1:6379>get age2 "20"