天天看点

学习Redis笔记

Redis[Remote Directory Server]:远程服务器字典

tar xzf redis-3.2.6.tar.gz

cd redis-3.2.6/

Make

Make install

Redis-server:  Redis服务器

Redis-cli: 命令行客户端

Redis-benchmark: Redis的性能测试工具

Redis-check-aof: AOF文件修复工具

Redis-check-dump: RDB文件检测工具

Redis.conf: Redis的配置文件

将配置文件中daemonize yes 以守护进程的方式来使用

直接启动

redis-server

redis-server /etc/redis.conf

停止Redis

Shutdown

结束Redis的进程

KEYS *  得到当前数据库中存在的键名

CONFIG GET name

CONFIG SET name value

Port 6379 默认端口

Bind 127.0.0.1, 默认绑定的主机地址

Timeout 0, 当客户端闲置多久之后关闭连接,0代表没有启动

Loglevel notice, 日志的级别

Logfile stdout, 日志的记录方式,默认为标准输出

Datebase 16,默认数据库的数量16个,默认的数据库编号从0开始

Save <second> <change>, 多少秒有多少次改变将其同步到磁盘中的数据文件里

Save 900 1

Save 300 10

Save 60 10000

Rdbcompression yes, 存储本地数据库时是否启用压缩,默认yes

Dbfilename dump.rdb, 指定本地数据库文件名,默认dump.rdb

Dir ./, 指定本地数据库的存放目录,默认是当前目录

一个键最多存储512MB

SET 语法: SET key value [EX seconds] [PX milliseconds] [NX|XX]

如果key存在,同名会产生覆盖

GET:根据key找到对应的值 语法:GET key

如果key不是字符串,会报错

如果key不存在,返回nil

GETRANGE: 返回字符串中一部分  语法: GETRANGE start end

GETSET: 设置指定key的值,并且返回旧的值  语法: GETSET key value

当key不存在返回nil,如果key不是字符串,会报错

MSET, 语法:MSET key vakue [key value…]

MGET,语法:MGET key key

STRLEN: 获取key的字符串长度  语法: STRLEN key   注意:对于不存在key获取其长度返回0

SETRANGE:相当于字符串替换的效果  语法: SETRANGE key offset value  注意:如果设置的key原来的字符串长度要比偏移量小,就会以零字节(\x00)填充

对不存在的key使用SETRANGE,返回零字节(\x00)填充

GETRANGE

SETNX: 语法: SETNX key value  只有key不存在才能设置成功

SETEX: 设置key并key的过期时间  语法: SETEX secondsvalue  注意:SETEX是原子性操作,相当于执行了SET keyvalue,又对ke设置了过期时间EXPIRE key seconds

MSETNX: 一次设置多个key-value对,只有所有的key都不存在的时候才能设置成功  语法: MSETNX key value [key value…]

PSETEX: 以毫秒为单位设置key的生存周期  语法: PSETEX key milliseconds value             返回毫秒数PTTL

INCR: 对key中存储的数字+1    语法:INCR key    注意:key如果不存在,则会先初始化为0,再进行INCR操作, 如果key存储的不是数字,会报错

INCRBY: 将key中存储的数字加上指定增量  语法:INCRBY key increment

INCRBYFLOAT: 给key中存储的数字加上指定的浮点数

DECR: 将key中存储的数字减1  语法: DESC KEY

DECRBY: 将key中存储的数值减去指定的值   DESCBY key increment

APPEND: 通过APPEND将值追加到字符串的末尾      APPEND key value  如果key不存在,则相当于执行了SET操作

在配置文件中可以通过配置

Hash-max-ziplist-entries 512   512字节

Hash-max-ziplist-value 64 字段数目

HSET: 将哈希表key中域field设置成指定的value    语法:HSET key field value

HGET: 返回哈希表key中指定field的值     如果key中field不存在,返回nil

HSETNX:将hash表中的field设置成指定的值,只要field不存在的时候才可以成功;如果field存在,操作无效

HSETNX key field value

HMSET: 通过将多个field-value设置到hash表key中   语法:HMSET key field value field value  …

HMSET:一次获得hash表key中对多个field值   语法:HMSET key field field    注意: 如果hash表key中field不存在,会返回nil

HGETALL: 返回hash表key中所有的field和value   语法: HGETALL key

HKEYS:返回hash中key的所有的field  语法:HKEYS key

HVALS:返回hash中key中filed所有对应的值   语法:HVALS key

HEXISTS:检测hash中key的field是否存在  语法:   HEXISTS key field

HLEN:返回hash表key中field的数量  语法:HLEN key

HINCRBY: 给hash中key的field做增量操作  语法: HINCRBY key field increment

HINCRBYFLOAT: 给hash中key的field做增量浮点操作    语法:HINCRBYFLOAT key field increment

HDEL:删除hash中key的指定field,可以删除一个也可以删除多个  语法: HDEL key field field

LPUSH: 向列表左端添加元素

RPUSH:向列表右端添加元素

LPUSHX:向列表头部添加元素,只有key存在才添加

PPUSHX:向列表尾部添加元素,只有key存在才添加

LPOP

RPOP

LRANGE:获取列表片段   语法:LRANGE key start stop

注意:如果start下表比列表的最大下标end大,返回的空列表;如果stop比列表长度大,返回到列表的末尾

LREM:删除列表中指定的值   语法:LREM key count value

count值有以下几种:

Count>0,从列表的头开始,向尾部搜索,移除与value相等的元素,移除count个;

Count<0:,从列表尾部向头搜索,移除与value相等的元素,移除count个

Count=0:移除列表中所有与value相等的值

LINDEX: 获得指定索引元素的值    LINDEX key index

LSET:设置指定索引元素的值   语法:LSET key index value

LTRIM: 只保留列表的片段   语法:LTRIM keystart stop

LINSERT:向列表插入元素   语法:LINSERT keyBEFORE|AFTER pivot value

RPOPLPUSH:将元素从一个列表转到另一个列表

BLPOP:是LPOP的阻塞版本  语法: BLPOP key[key…] timeout

SADD:像集合中添加元素 语法:SADD key member [,…]

SMEMBERS:返回指定集合中的元素   语法:SMEMBERS key

SISMEMBER:检测value是否是集合中的成员  语法:SISMEMBER key value

SREM:删除集合中的一个或者多个成员   语法:SREM key member [member…]

SPOP:删除并返回集合中的随机元素   语法: SPOP key

SRANDMEMBER:随机返回结合中的元素  SRANDMEMBER key count

count为正数,而且小于集合中的元素个数,返回的是一个包含随机元素的集合数组;

count大于集合中元素的个数,返回整个集合;

count为负数,返回一个数组,数组中的成员可能出现重复,数组的长度是count的绝对值

SDIFF:返回集合间的差集   语法: SDIFF key key …

SINTER:返回集合间的交集   语法:SINTER key key …

SUNION:返回集合间的并集  语法: SUNION key key …

SCRAD:返回集合中元素的个数  SCRAD key

SDIFFSTORE:将差集结果保存到指定集合中    SDIFFSTORE destination key key …

SINTERSTORE

SUNIONSTORE

SMOVE:将集合中元素移动另外一个集合中  SMOVE source destination member

ZADD:将元素及其分数添加到集合中    语法: ZADD key score member [score member]

ZADD key +inf maxInt -inf minInx

ZSCORE:获得指定元素的分数   ZSCORE key member

ZRANGE:按照元素分数从小到大的顺序返回指定索引start到stop之间所有元素(包含两端)     ZRANGE key start  stop[WITHSCORES]

当两个元素的分数相同时,Redis在排序时按照字段顺序(0<9<A<Z<a<z),如果使用的是UTF-8的编码方式的中文同样按照字典顺序排列

ZREVRANGE:和ZRANGE相反,按照分数从大到小的顺序     ZREVRANGE key start stop [WITHSCORES]

ZRANGEBYSCORE:获得指定分数范围内的元素,按照分数从小到大的熟悉怒,返回的是分数在指定的min到max的元素

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

ZRANGEBYSCORE PHPScore 80 90 WITHSCORES     包含80、90

ZRANGEBYSCORE PHPScore (80 (90 WITHSCORES  不包含80、90

ZREVRANGEBYSCORE:获得指定分数范围内的元素,按照元素的分数从大到小的顺序返回min和max之间的元素

ZREVRANGEBYSCORE keymax min [WITHSCORES] [LIMIT offset count]

ZINCRBY:操作某个元素的分数,返回操作之后的分数     ZINCRBY key increment member

ZCARD:获得集合中元素的数量   ZCARD key

ZCOUNT: 获得指定分数内的元素数量

ZREM:删除一个或多个元素,返回删除元素的个数     ZREM key member …

ZREMRANGEBYRANK:按照排名范围删除元素,按照分数从小到达的顺序删除所指定的排名范围的所有元素

ZREMRANGEBYRANK key start stop

ZREMRANGEBYSCORE:按照分数范围删除元素     ZREMRNAGEBYSCORE key min max

ZRANK:获得指定元素的排名,根据分数从小到大的顺序     ZRANK key member

ZREVRANK:获得指定元素的排名,根据分数从大到小的顺序     ZRANK key member

ZINTERSTORE:计算有序集合的交集,并将结果保存起来

ZINTERSTORE destination numkeys key key … [WEIGHTS weight weight…] [AGGEGATE SUM|MIN|MAX]

ZUNIONSTORE:计算有序集合并集,将结果保存起来

ZINTERSTORE destination numkeys  key key … [WEIGHTS weight weight…] [AGGEGATE SUM|MIN|MAX]

KEYS:返回所有符合给定模式的key   语法: KEYS pattern

*: 匹配任意个字符

?:匹配一个任意字符

[]:匹配[]之间的一个字符

\x:匹配特殊字符

EXISTS:检测指定key是否存在    语法:EXISTS key

TYPE:返回key所存储的类型   语法:TYPE key

EXPIRE:设置key的过期时间  语法:EXPIRE key seconds

EXPIREAT:需要指定在指定时间戳过期   语法:EXPIREAT keytimestamp

PEXPIRE:以毫秒的形式指定过期时间   语法:PEXPIRE key milliseconds

PEXPIREAT:指定时间戳,单位为毫秒  语法:PEXPIREAT key timestamp

TTL:以秒为单位返回key剩余时间   如果key没有设置过期时间,返回-1;如果key不存在返回-2

PTTL:以毫秒为单位返回key剩余时间

PERSIST:将一个带有过期时间的key转变成永久的key  语法: PERSIST key

DEL:删除指定的key

RANDOMKEY:随机的从当前数据库中返回一个key

RENAME:重命名一个键   RENAME key  newkey

RENAMENX:如果新名称不存在才会生效

DUMP:序列化给定的key,返回序列化之后的值

RESTORE:反序列化

MOVE:将当前数据库中的key移动到另外的数据库中

MULTI:开启事务,事务块中的多条语句会按照顺序放入队列当中,最后由EXEC命令来执行

MULTI

INCR counter1

INCR counter2

INCR counter3

PING

GET counter1

EXEC:执行事务块中的命令

WATCH:监视一个或者多个key,如果在执行事务之前这个key如果被其他命令改动,事务就被打断了。

UNWATCH:取消WATCH命令对所有key的监视

DISCARD:

语法错误:Redis接到exec后直接返回错误,正确的命令也不会被执行

运行错误:正确的命令会被执行

PING:测试和服务器之间是否连接有效

ECHO:打印一个特定信息

QUIT:请求服务器关闭与当前客户端的连接,EXIT,CTRL-C

SHUTDOWN:关闭服务器和客户端

AUTH:指定Redis的身份验证,Redis配文件中requirepass选项的值

CONFIG SET requirepass password

登录进来之后通过AUTH password进行认证

连接的时候-a password

SELECT:选择数据库   SELECT 0

EXPIRE/EXPIREAT

PEXPIRE/PEXPIREAT

PERSIST

TTL

PTTL

使用SET GETSET也会清除过期时间

SORT key

SORT key DESC

SORT key ALPHA DESC

SORT key [ALPHA] LIMIT 0 5 DESC

SORT uid BY user_level_*

SORT uid GET user_name_*

SORT key [BY pattern] [LIMIT offset count] [GET pattern] [GET pattern] [ASC|DESC|ALPHA] [STORE destination]

包含两个角色,一个是发布者,一个是订阅者;订阅者可以订阅一个或者多个频道channel;发布者可以向指定频道发布信息

通过PUBLISH发布消息

PUBLISH channel message

PUBLISH channel1.1 'abelxu'

通过SUBSCRIBE订阅频道

SUBSCRIBE channel …

注意:发不出去的消息是不会被持久化的,只有客户端订阅了之后才会接手后面发送的消息

UNSUBSCRIBE:取消某个频道订阅,但在Redis客户端中做了限制,没有办法进行验证     UNSUBSCRIBE [channel]

PSUBSCRIBE:订阅指定的规则

UNPSUBSCRIBE:取消订阅

本文转自 许大树 51CTO博客,原文链接:http://blog.51cto.com/abelxu/1892883,如需转载请自行联系原作者