1、/ 2014-12-1 23:22:37 整理 / 目前 最新 为 2.8.17,此视频为 2.6.17 Redis 基础知识 redis 是什么 : Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets. redis 是开源 ,BSD 许可 ,高级的 key-value 存储系统 .
2、 可以用来存储字符串 ,哈希结构 ,链表 ,集合 ,因此 ,常用来提供数据结构服务 . redis 和 memcached 相比 ,的独特之处 : 1: redis 可以用来做存储 (storge), 而 memccached 是用来做缓存 (cache) 这个特点主要因为其有 ”持久化 ”的功能 . 2: 存储的数据有 ”结构 ”,对于 memcached 来说 ,存储的数据 ,只有 1 种类型 -”字符串 ”, 而 redis 则可以存储字符串 ,链表 ,哈希结构 ,集合 ,有序集合 . Redis 下载安装 1:官方站点 : redis.io 下载最新版或者最新 stable 版 wge
3、t http:/download.redis.io/releases/redis-2.8.17.tar.gz 2:解压源码并进入目录 tar zvxf redis-2.8.17.tar.gz 3: 不用 configure 4: 直接 make (如果是 32 位机器 make 32bit) 注 :易碰到的问题 ,时间错误 . 原因 : 源码是官方 configure 过的 ,但官方 configure 时 ,生成的文件有时间戳信息 , Make 只能发生在 configure 之后 , 如果你的虚拟机的时间不对 ,比如说是 2012 年 解决 : date -s yyyy-mm-dd hh:
4、mm:ss 重写时间 再 clock -w 写入 cmos 5: 可选步骤 : make test 测试编译情况 (可能出现 : need tcl 8.4 这种情况 , yum install tcl) 6: 安装到指定的目录 ,比如 /usr/local/redis make PREFIX=/usr/local/redis install 注 : PREFIX 要大写 7: make install之后 ,得到如下几个文件 redis-benchmark 性能测试工具 redis-check-aof 日志文件检测工 (比如断电造成日志损坏 ,可以检测并修复 ) redis-check-dum
5、p 快照文件检测工具 ,效果类上 redis-cli 客户端 redis-server 服务端 8: 复制配置文件 Cp /path/redis.conf /usr/local/redis 9: 启动与连接 /path/to/redis/bin/redis-server ./path/to/conf-file 例 :rootlocalhost redis# ./bin/redis-server ./redis.conf 连接 : 用 redis-cli #/path/to/redis/bin/redis-cli -h localhost -p 6379 10: 让 redis 以后台进程的形式
6、运行 编辑 conf 配置文件 ,修改如下内容 ; daemonize yes Redis对于 key的操作命令 del key1 key2 . Keyn 作用 : 删除 1 个或多个键 返回值 : 不存在的 key 忽略掉 ,返回真正删除的 key 的数量 rename key newkey 作用 : 给 key 赋一个新的 key 名 注 :如果 newkey 已存在 ,则 newkey 的原值被覆盖 renamenx key newkey 作用 : 把 key 改名为 newkey, 如果 newkey 不存在时才可以修改成功返回 1,否则不能修改。 返回 : 发生修改返回 1,未发生修
7、改返回 0 注 : nx not exists, 即 , newkey 不存在时 ,作改名动作 move key db redis 127.0.0.1:63791 select 2 OK redis 127.0.0.1:63792 keys * (empty list or set) redis 127.0.0.1:63792 select 0 OK redis 127.0.0.1:6379 keys * 1) “name“ 2) “cc“ 3) “a“ 4) “b“ redis 127.0.0.1:6379 move cc 2 (integer) 1 redis 127.0.0.1:6379
8、 select 2 OK redis 127.0.0.1:63792 keys * 1) “cc“ redis 127.0.0.1:63792 get cc “3“ (注意 : 一个 redis 进程 ,打开了不止一个数据库 , 默认打开 16 个数据库 ,从 0 到 15 编号 , 如果想打开更多数据库 ,可以从配置文件修改 ) keys pattern 查询相应的 key 在 redis 里 ,允许模糊查询 key 有 3 个通配符 *, ? , *: 通配任意多个字符 ?: 通配单个字符 : 通配括号内的某 1 个字符 例如: redis 127.0.0.1:6379 flushdb O
9、K redis 127.0.0.1:6379 keys * (empty list or set) redis 127.0.0.1:6379 mset one 1 two 2 three 3 four 4 OK redis 127.0.0.1:6379 keys o* 1) “one“ redis 127.0.0.1:6379 key *o (error) ERR unknown command key redis 127.0.0.1:6379 keys *o 1) “two“ redis 127.0.0.1:6379 keys ? 1) “one“ 2) “two“ redis 127.0.
10、0.1:6379 keys on? 1) “one“ redis 127.0.0.1:6379 set ons yes OK redis 127.0.0.1:6379 keys oneaw / 正则表达式 1) “one“ randomkey 返回随机 key exists key 判断 key 是否存在 ,返回 1/0 type key 返回 key 存储的值的类型 有 string,link,set,order set, hash ttl key 作用 : 查询 key 的生命周期 返回 : 秒数 注 : 有生命周期 key,返回秒数; 永不过期的 key,返回 -1; 对于不存在的 ke
11、y,返回 -2; /2.8 版本以后,之前返回 -1 expire key 整型值 作用 : 设置 key 的生命周期 ,以秒为 单位 注意:默认是 store,故默认永不过期。 同理 : pexpire key 毫秒数 , 设置生命周期 pttl key, 以毫秒返回生命周期 persist key 作用 : 把指定 key 置为永久有效 Redis字符串类型的操作 set key value ex 秒数 / px 毫秒数 nx /xx 如 : set a 1 ex 10 , 10 秒有效 Set a 1 px 9000 , 9 秒有效 注 : 如果 ex,px 同时写 ,以后面的有效期为准
12、 如 set a 1 ex 100 px 9000, 实际有效期是 9000 毫秒 nx: 表示 key 不存在时 ,执行操作 xx: 表示 key 存在时 ,执行操作 mset multi set , 一次性设置多个键值 例 : mset key1 v1 key2 v2 . get key 作用 :获取 key 的值 mget key1 key2 .keyn 作用 :获取多个 key 的值 setrange key offset value 作用 :把字符串的 offset 偏移字节 ,改成 value offset 坐标从 0 开始 redis 127.0.0.1:6379 set gre
13、et hello OK redis 127.0.0.1:6379 setrange greet 2 x (integer) 5 redis 127.0.0.1:6379 get greet “hexlo“ 注意 : 如果偏移量 字符长度 , 该字符自动补 0x00 redis 127.0.0.1:6379 setrange greet 6 ! (integer) 7 redis 127.0.0.1:6379 get greet “heyyox00!“ append key value 作用 : 把 value 追加到 key 的原值上 getrange key start stop 作用 :
14、是获取字符串中 start, stop范围的值 注意 : 对于字符串的下标 ,左数从 0 开始 ,右数从 -1 开始 redis 127.0.0.1:6379 set title chinese OK redis 127.0.0.1:6379 getrange title 0 3 “chin“ redis 127.0.0.1:6379 getrange title 1 -2 “hines“ 注意 : 1: start=length, 则返回空字符串 2: stop=length,则截取至字符结尾 3: 如果 start 所处位置在 stop 右边 , 返回空字符串 getset key new
15、value 作用 : 获取并返回旧值 ,设置新值 redis 127.0.0.1:6379 set cnt 0 OK redis 127.0.0.1:6379 getset cnt 1 “0“ redis 127.0.0.1:6379 getset cnt 2 “1“ incr key 作用 : 指定的 key 的值加 1,并返回加 1 后的值 注意 : 1:不存在的 key 当成 0,再 incr 操作 2: 范围为 64 有符号 incrby key number redis 127.0.0.1:6379 incrby age 90 (integer) 92 incrbyfloat key
16、 floatnumber redis 127.0.0.1:6379 incrbyfloat age 3.5 “95.5“ decr key redis 127.0.0.1:6379 set age 20 OK redis 127.0.0.1:6379 decr age (integer) 19 decrby key number redis 127.0.0.1:6379 decrby age 3 (integer) 16 getbit key offset 作用 :获取值的二进制表示 ,对应位上的值 (从左 ,从 0 编号 ) redis 127.0.0.1:6379 set char A O
17、K redis 127.0.0.1:6379 getbit char 1 (integer) 1 redis 127.0.0.1:6379 getbit char 2 (integer) 0 redis 127.0.0.1:6379 getbit char 7 (integer) 1 setbit key offset value 设置 offset 对应二进制位上的值 返回 : 该位上的旧值 注意 : 1:如果 offset 过大 ,则会在中间填充 0, 2: offset 最大大到多少 3:offset 最大 232-1,可推出最大的的字符串为 512M bitop operation d
18、estkey key1 key2 . 对 key1,key2.keyN 作 operation,并将结果保存到 destkey 上。 operation 可以是 AND 、 OR 、 NOT 、 XOR redis 127.0.0.1:6379 setbit lower 7 0 (integer) 0 redis 127.0.0.1:6379 setbit lower 2 1 (integer) 0 redis 127.0.0.1:6379 get lower “ “ redis 127.0.0.1:6379 set char Q OK redis 127.0.0.1:6379 get cha
19、r “Q“ redis 127.0.0.1:6379 bitop or char char lower (integer) 1 redis 127.0.0.1:6379 get char “q“ 注意 : 对于 NOT 操作 , key 不能多个 link 链表结构 lpush key value 作用 : 把值插入到链接头部 rpop key 作用 : 返回并删除链表尾元素 rpush,lpop: 不解释 lrange key start stop 作用 : 返回链表中 start ,stop中的元素 规律 : 左数从 0 开始 ,右数从 -1 开始 lrem key count value 作用 : 从 key 链表中删除 value 值 注 : 删除 count 的绝对值个 value 后结束 Count0 从表头删除 Count llen task (integer) 3 redis 127.0.0.1:6379