Redis快速入门-教程

目录:

  1. Redis是什么?
  2. Redis 安装
  3. Redis 启动
  4. Redis支持的数据类型
  5. Redis服务器操作命令
  6. 服务器客户端操作命令
  7. Redis string操作命令
  8. Sorted set (Zset)类型数据的操作命令:
  9. Redis list 操作命令
  10. Redis hash 操作命令
  11. Redis set 操作命令
  12. Redis sort set操作命令
  13. Redis cluster 操作命令

1、Redis是什么?

Redis是一个key-value存储系统。
它支持多种存储的value类型,这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。

 

2、Redis的安装

可参照下面步骤,另外也可以参考:Redis安装部署快速教程

http://baike.baidu.com/link?url=SVeAQzdI1-oYbaL3gdMbmTRiIcTRDu7wgOcGNNQYdJXQ70NKmUchd4PVti1rfEj-KR4IDZoYNKg4GRU2Gsk3la  
Redis百度百科

安装:

  • 下载 redis的压缩包文件(http://download.redis.io/releases/redis-3.0.4.tar.gz )
  • 解压缩文件  tar –zxvf redis-3.0.4.tar.gz
  • 进入到redis-3.0.4文件夹    cd redis-3.0.4
  • make
  • make test  -----建议,可不做
  • make install
  • 修改配置文件

     Redis.conf

3、Redis启动

启动服务器:
Redis-home/redis-server  redis.conf &

客户端:
Redis-home/redis-cli  –h ip –p port
如果连接本机的默认端口,可以省略后面的-h 和-p选项

如果服务器需要进行用户身份验证,在连接后执行:

Auth password

4、Redis支持的数据类型

  •    string(字符串)

   ——string是最简单的类型,一个key对应一个value。

  •    list(链表)

   ——list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等。操作中key理解为链表的名字。

  •    set(集合)

   ——set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。操作中key理解为集合的名字。

  •    zset(sorted set --有序集合)

  ——zset是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解了有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。

  •    hash(哈希类型)。

5、Redis服务器操作命令

Auth password     身份验证
BGRewriteAOF  AOF: append-only file   后台写AOF文件
BGSave     后台保存到磁盘上
CLIENT KILL [ip:port] [ID client-id] [TYPE normal|slave|pubsub] [ADDR ip:port] [SKIPME yes/no]   中断某客户端的连接
CLIENT LIST  :列出当前连接的客户端
CLIENT SETNAME connection-name: 给客户端设置名称
CLIENT GETNAME: 查看当前客户端的名称
CLIENT PAUSE timeout : 暂停对客户端的服务若干秒
COMMAND: 帮助,列出redis支持的命令

COMMAND COUNT 列出服务器支持的命令数
COMMAND GETKEYS 返回操作命令中的键名称
如: command getkeys set name student
          返回 name
COMMAND INFO command-name [command-name ...]查看命令的使用方式,相当于命令的帮助
CONFIG GET parameter: 查看服务器的配置项
Config get port
CONFIG SET parameter value: 给服务器配置项设置新值
CONFIG REWRITE: 重写配置文件redis.conf
DBSIZE: 查看当前数据库中key的数量

*Debug object key   调试用命令
*Debug segfault  调试用命令,模拟服务器死机
DEL key [key ...] 删除指定的键,不支持通配符
Multi  命令序列开始标记
Exec    开始执行命令序列
Discard  取消命令序列
Dump key  序列化key,返回一个序列化值
ECHO message 返回message
*EVAL script numkeys key [key ...] arg [arg ...]  执行LUA脚本
 eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second

* EVALSHA sha1 numkeys key [key ...] arg [arg ...]  执行LUA脚本,脚本存储在server端
EXISTS key [key ...]   检查指定的 key 是否存在
EXPIRE key seconds  指定 key 的过期时间,单位是秒
EXPIREAT key timestamp :指定key在某个时间戳过期
FLUSHALL   :删除所有数据库中所有key
FLUSHDB: 删除当前数据库上的所有key
* GEOADD key longitude latitude member  :增加一个空间点,用于空间计算(以 sorted set 数据保存,但目前无版本支持该命令)
*GEOHASH key member [member ...]  返回点的hash值
* GEOPOS key member [member ...] 返回一个点的经纬度
* GEODIST key member1 member2 [unit] 计算两点间的距离 单位可以是米,千米,英里或英尺

* GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [count]  返回以指定点为圆心以radius为半径的圆内含有的其他的点,并计数
*GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [count] 通过名称指定,同上
INFO [section]:返回服务器的系统信息,section的取值可以如下:
server: General information about the Redis server
clients: Client connections section
memory: Memory consumption related information
persistence: RDB and AOF related information
stats: General statistics
replication: Master/slave replication information
cpu: CPU consumption statistics
commandstats: Redis command statistics
cluster: Redis Cluster section
keyspace: Database related statistics

Keys pattern :查找含有pattern的key的名称,支持通配符
LASTSAVE: 查看上次保存的时间戳
MIGRATE host port key destination-db timeout [COPY] [REPLACE]: 从服务器实例上传输数据到目标服务器的指定数据中。
MONITOR: 监听服务器上的用户请求
MOVE key db:  将一个key从当前数据库移动到指定数据库上
  move  L1  1
OBJECT REFCOUNT    返回key的引用次数,主要用于调试.
OBJECT ENCODING    返回key的编码方式.
OBJECT IDLETIME       返回key的发呆时间(就是未调用时间)
PERSIST key  移除 key的过期时间(用expire设置的过期时间)

PEXPIRE key milliseconds  : 以毫秒为单位指定key的过期时间
PEXPIREAT key milliseconds-timestamp : 以毫秒为单位指定过期时刻(时间戳)
PTTL key: 返回设置了过期时间的key的剩余时间,单位毫秒(返回值-2:key 不存在,-1 未设过期时间 ,和值)
PFADD key element [element ...] 把值加入到一种特殊的数据结构中,可以用pcount key 命令查看key中的数据的数量
PFCOUNT key [key ...]查看key中的数据的数量,重复值不重复计数
PFMERGE destkey sourcekey [sourcekey ...]   把 多个hyperloglog 合并成一个,并去掉重复值
PING  [string] :检查连接是否可用,返回pong 或者后面的参数string
PUBLISH channel message: 向特定的channel 发送消息。
PUNSUBSCRIBE [pattern [pattern ...]]: 停止订阅消息?
Quit : 断开连接,退出客户端。

Randomkey: 从当前数据库返回一个随机的key名称
RENAME key newkey :重命名一个key
RENAMENX key newkey: 重命名key,只有newkey不存在才能成功
RESTORE key ttl serialized-value [REPLACE] 通过序列化的值恢复一个key,序列化的值是通过前面的dump得到的。Ttl为0没有过期时间,如果不使用replace,key存在时将返回错误提示,使用则覆盖原来的key
Save: 保存数据到磁盘上,一般要调用bgsave,因为save会阻塞其他客户端
SCRIPT EXISTS script [script ...]: 检查在脚本缓存中指定的LUA脚本是否存在
SCRIPT FLUSH : 将缓存的LUA脚本清除
SCRIPT KILL  : 停止正在执行的LUA脚本
SCRIPT LOAD script: 加载LUA脚本到脚本缓存
SELECT index   选择指定的数据库

 6、服务器客户端操作命令:

PSETEX key milliseconds value : 以毫秒为单位设置key的生存周期
Psubscribe  pattern  订阅指定的频道 支持通配符和正则表达式,订阅的消息在其他客户端上通过pub/sub命令发布时,会自动接收到。
PUBSUB CHANNELS [pattern]: 显示channels
PUBSUB NUMSUB [channel-1 ... channel-N]
Pubsub  numpat: 返回订阅了消息的客户数
SHUTDOWN [NOSAVE] [SAVE]  关闭服务器
Slow log 是 Redis 用来记录查询执行时间的日志系统
Slowlog get 获取slow log
Slowlog len  查询当前slow log的长度
Slowlog reset 重置 slow log
SUBSCRIBE channel [channel ...] : 侦听指定channel上的消息
SYNC:  master  slave服务器进行数据同步
Time 返回系统时间,时间戳的形式
TTL key: 返回key的剩余存活时间。{expire 指定的存活时间}

Type key : 查看key的类型,返回值有6种: string、 hash、 set、 list  、sorted set、none
UNSUBSCRIBE [channel [channel ...]]: 停止侦听channel 上的消息
UNWATCH :停止监视所有的key
WATCH key [key ...]: 指定监控的key
WAIT numslaves timeout:  令当前客户端暂停等待一个时间,等待所有的“写”命令的执行完毕,等待时间结束后返回实际等待时间

7、Redis string 操作命令

  • Append key value   追加
  • BITCOUNT key [start end]        1 计数
  • BITOP operation destkey key [key ...]  位操作

  -operation:  and or not xor

  • BITPOS key bit [start] [end]    计算key中 bit的首要位置

-Set mykey “\xFF\xF0\x00”====➔二进制代码
-“1111 1111 1111 0000 0000 0000”
-Bitpos mykey 0   ---12
-Bitpos mykey 1   --- 0

  • DECR key 数值型数据减 1
  • DECRBY key decrement  数值型值减去一个指定的数值
  • GET key   返回key的值
  • GETBIT key offset 返回key中offset位置上的二进制值(0或1)
  • GETRANGE key start end  返回key中start 和end之间的字符
  • GETSET key value 返回key中原有的值,并把key的值设置成value
  • INCR key: 给字符串中的number值加1
  • INCRBY key increment : 给key增加increment
  • INCRBYFLOAT key increment: 给key增加一个浮点数increment
  • MGET key [key ...]  返回多个key的值
  • MSET key value [key value ...]  给多个key设置值
  • MSETNX key value [key value ...]: 给多个key 赋值,当key 不存在时成功

SETBIT key offset value  设置string中指定位置的值(0/1)

  • SET key value [EX seconds] [PX milliseconds] [NX|XX]
  •    设置set key的值,ex 秒|px毫秒 指定过期时间

  •    NX: key不存在时成功   XX: key存在时成功

  •   具有如下三个命令 SETNX, SETEX, PSETEX的功能

  • SETEX key seconds value  : 设置key的值,当key预先存在时成功,seconds秒后过期
  • SETNX key value: 设置key的值,当key预先不存在时成功
  • SETRANGE key offset value  用value替换字符串中从offset开始的字符串
  • STRLEN key: 计算key中字符串长度

8、Sorted set (Zset)类型数据的操作命令

ZRANK key member: 返回有序集key中的元素按照score升序排列所处的位置(序号,从0开始)
ZREVRANK key member:返回有序集key中的元素按照score降序排列所处的位置(序号,从0开始)
ZSCORE key member: 返回有序集key中member所对应的score
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]: 计算多个有序集的并集,并保存
其中的weights,后面要跟的数值数量是参数key(集合)的个数,用来指定每个key的score的权重,从而可以得到交集中每个key的member所对应的score的值,如果不写weights,默认权重为1,numkeys指定后面到底有几个key参加运算
scan  num [match pattern]  [count cnt]:遍历数据库中从num开始的key,相当于keys 命令
返回值分两部分,第一部分是下次接着遍历的开始点num,第二个是遍历到的值, count用来指示,一次显示多少个数据,默认为10,match 用来指定遍历的值含有pattern,支持通配符

9、Redis list 操作命令

Lpush key value [value …]      左端入栈
Rpush key value [value…]      右端入栈
Lrange key start  end              显示list指定区域元素  (举例)
BLpop key [key ...] timeout    删除左端元素
Brpop key [key ...] timeout    删除右端元素
BRpopLpush source destination timeout  源右出目的左进
LINDEX key index: 查看key中索引号是index的值
LINSERT key BEFORE|AFTER pivot value: 在key中pivot之前/后插入值 value
LLEN key: 返回key的长度

LPOP key   删除list key中左端第一个元素
LPUSHX key value: 左端插入元素,如果key 存在
LRANGE key start stop:显示list key中从start到stop的值
LREM key count value: 移除list key中元素 value
count > 0: Remove elements equal to value moving from head to tail.
count < 0: Remove elements equal to value moving from tail to head.
count = 0: Remove all elements equal to value.
LSET key index value: 将list key中索引号是index的值设置成value,如果越界,将报错
LTRIM key start stop: 将list key中元素只保留 start 和stop之间的元素,包括 start和stop
Rpop key  ,删除list key中右端第一个元素
RPOPLPUSH source destination:  从源的右端移除,加入到目标的左端
RPUSHX key value : 右端入栈,仅当key存在时SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination] 排序key中元素
默认情况下,以按照浮点数类型来排序的,所以默认情况下,key中数据必须是数值型
如果key中包含非数字字符串,需要添加参数alpha,表示按字典序排列
Limit offset用来指定从第几个元素开始排序,count指定一共对多少个元素进行排序输出
Desc | asc 指定排序的方向
By pattern: 指定某个外键进行排序
Sometimes you want to sort elements using external keys as weights to compare instead of comparing the actual elements in the list, set or sorted set. Let's say the list mylist contains the elements 1, 2 and 3 representing unique IDs of objects stored in object_1, object_2 and object_3. When these objects have associated weights stored in weight_1, weight_2 and weight_3, SORT can be instructed to use these weights to sort mylist with the following statement:
SORT mylist BY weight_*
Get pattern : 指定要显示的有哪些键值,可以多项使用
Store  destination: 指定将排序数据存储到指定的key中,结果是一个list值

10、Redis hash 操作命令
HDEL key field [field ...]  删除hash key中指定的field
HEXISTS key field检查在hash key中是否包含field
HGET key field: 获取hash key中field的值
HGETALL key:   获取hash  key中所有的field的值,显示field名称
HINCRBY key field increment :给hash key 中指定的数值型field 增加一个数值
HINCRBYFLOAT key field increment: 给hash key的指定数值型field增加一个浮点值
HKEYS key: 返回hash key 中所有的field的名称
HLEN key:  返回hash key中的field的数量
HMGET key field [field ...]  :返回hash key中多个field的值
HMSET key field value [field value ...]  :分别设置hash key中多个field的值
HSET key field value: 设置hash key中的field的值
HSETNX key field value:  当hash key中 field 不存在时设置其值,否则不设置
HSTRLEN key field: 返回hash key中field的字符串长度

HDEL key field [field ...]  删除hash key中指定的field
HEXISTS key field检查在hash key中是否包含field
HGET key field: 获取hash key中field的值
HGETALL key:   获取hash  key中所有的field的值
HINCRBY key field increment :给hash key 中指定的数值型field 增加一个数值
HINCRBYFLOAT key field increment: 给hash key的指定数值型field增加一个浮点值
HKEYS key: 返回hash key 中所有的field的名称
HLEN key:  返回hash key中的field的数量
HMGET key field [field ...]  :返回hash key中多个field的值
HMSET key field value [field value ...]  :分别设置hash key中多个field的值
HSET key field value: 设置hash key中的field的值
HSETNX key field value:  当hash key中 field 不存在时设置其值,否则不设置
HSTRLEN key field: 返回hash key中field的字符串长度

HVALS key: 返回hash key中所有field的值,不显示field名称
Hscan key  num  [match pattern] [count cnt]:遍历Hash集合key中从num开始的元素
返回值分两部分,第一部分是下次接着遍历的开始点num,第二个是遍历到的值,count用来指示,一次显示多少个数据,默认为10,match 用来指定遍历的值含有pattern,支持通配符


11、Redis set 操作命令

SADD key member [member ...]  向set key中插入值
SCARD key: 返回set中的数据元素量
SDIFF key1 [key2 ...]  求几个set的差集,key1-key2-key3…
SDIFFSTORE destination key [key ...] 计算差集,并保存结果
SINTER key [key ...]  查询几个key的交集
SINTERSTORE destination key [key ...]  求交集并保存
SISMEMBER key member: 判断member是否key集合的一个元素
SMEMBERS key  显示集合的所有元素  sinter  key 具有相同的功效
SMOVE source destination member: 向指定元素从集合移动到另一个集合
SPOP key [count]: 从key中删除一个或多个随机元素 、count 参数暂不可用,3.2版可用
Srandmember key :返回key中一个或多个随机元素,同上,但不删除

SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination] 排序key中元素
默认情况下,以按照浮点数类型来排序的,所以默认情况下,key中数据必须是数值型
如果key中包含非数字字符串,需要添加参数alpha,表示按字典序排列
Limit offset用来指定从第几个元素开始排序,count指定一共对多少个元素进行排序输出
Desc | asc 指定排序的方向
By pattern: 指定某个外键进行排序
Sometimes you want to sort elements using external keys as weights to compare instead of comparing the actual elements in the list, set or sorted set. Let's say the list mylist contains the elements 1, 2 and 3 representing unique IDs of objects stored in object_1, object_2 and object_3. When these objects have associated weights stored in weight_1, weight_2 and weight_3, SORT can be instructed to use these weights to sort mylist with the following statement:
SORT mylist BY weight_*
Get pattern : 指定要显示的有哪些键值,可以多项使用
Store  destination: 指定将排序数据存储到指定的key中,结果是一个list值

SREM key member [member ...]  从集合中删除指定的元素
SUNION key [key …] 求多个集合的并集
SUNIONSTORE destination key [key ...]:求多个集合的并集并保存
Sscan key  num [match pattern] [count cnt] :遍历集合key中从num开始的元素
返回值分两部分,第一部分是下次接着遍历的开始点num,第二个是遍历到的值,count用来指示,一次显示多少个数据,默认为10,match 用来指定遍历的值含有pattern,支持通配符

12、Redis sort set操作命令

SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination] 排序key中元素
默认情况下,以按照浮点数类型来排序的,所以默认情况下,key中数据必须是数值型
如果key中包含非数字字符串,需要添加参数alpha,表示按字典序排列
Limit offset用来指定从第几个元素开始排序,count指定一共对多少个元素进行排序输出
Desc | asc 指定排序的方向
By pattern: 指定某个外键进行排序
Sometimes you want to sort elements using external keys as weights to compare instead of comparing the actual elements in the list, set or sorted set. Let's say the list mylist contains the elements 1, 2 and 3 representing unique IDs of objects stored in object_1, object_2 and object_3. When these objects have associated weights stored in weight_1, weight_2 and weight_3, SORT can be instructed to use these weights to sort mylist with the following statement:
SORT mylist BY weight_*
Get pattern : 指定要显示的有哪些键值,可以多项使用
Store  destination: 指定将排序数据存储到指定的key中,结果是一个list值

SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]: 排序key中元素
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
向有序集合中插入元素
如果member已存在,则重新按照score排序,以保证继续有序
Score是一个双精度浮点数
XX: 只更新元素,不添加新元素
NX:不更新元素,只添加新元素
CH: 改变返回值,(默认返回添加的新元素的个数,ch要求返回值发生了变化的元素)
2.4以下的版本一次只能添加或修改一个元素
ZCARD key  计算有序集合key中元素的数量
ZCOUNT key min max  计算有序集合key中界于min和max之间的元素member的个数

ZINCRBY key increment member: 给有序集合key中的元素member的编号score增加一个数值,要求score必须是数值型
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE (合计) SUM|MIN|MAX]  求多个有序集合的交集,并保存
其中的weights,后面要跟的数值数量是参数key(集合)的个数,用来指定每个key的score的权重,从而可以得到交集中每个key的member所对应的score的值,如果不写weights,默认权重为1,numkeys指定后面到底有几个key参加运算
ZLEXCOUNT key min max 计算有序集合key中位于min和max字母间的元素的个数
ZRANGE key start stop [WITHSCORES]: 显示有序集key中在start和stop之间的元素,withscores显示score,否则只显示member,start和stop以0位开始,-1表示最后一个元素,-2表示倒数第二个元素
ZRANGEBYLEX key min max [LIMIT offset count]: 按字母序排列有序集合key中score相同的member
ZREVRANGEBYLEX key max min [LIMIT offset count]: 按字母反序输出(同上)

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]  显示有序集key中score界于min和max(含)之间的member,如果有参数withscores,同时显示score,否则只显示member
ZRANK key member: 返回有序集key中的元素按照score升序排列所处的位置(序号,从0开始)
ZREM key member [member ...]:从有序集key中删除member,如果member不存在不执行任何操作们如果key不是sorted set,返回错误
ZREMRANGEBYLEX key min max:删除有序集key中member取值值min和max之间的member
ZREMRANGEBYRANK key start stop: 删除有序集key中从start到stop之间的member
ZREMRANGEBYSCORE key min max: 删除有序集key中score在min和max之间的元素
ZREVRANGE key start stop [WITHSCORES]: 反向显示有序集key中从start开始到stop结束的元素
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]:反向显示有序集key中score的取值界于max和min之间的元素,withscores指定是否显示score,limit限制输出元素的个数(相当于mysql中的limit)

ZRANK key member: 返回有序集key中的元素按照score升序排列所处的位置(序号,从0开始)
ZREVRANK key member:返回有序集key中的元素按照score降序排列所处的位置(序号,从0开始)
ZSCORE key member: 返回有序集key中member所对应的score
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]: 计算多个有序集的并集,并保存
其中的weights,后面要跟的数值数量是参数key(集合)的个数,用来指定每个key的score的权重,从而可以得到交集中每个key的member所对应的score的值,如果不写weights,默认权重为1,numkeys指定后面到底有几个key参加运算
Zscan key  num [match pattern]  [count cnt]:遍历有序集中从num开始的元素
返回值分两部分,第一部分是下次接着遍历的开始点num,第二个是遍历到的值, count用来指示,一次显示多少个数据,默认为10,match 用来指定遍历的值含有pattern,支持通配符

13、Redis cluster 操作命令

ROLE 查看当前服务器instance的角色,master/slave/sentinel
SLAVEOF host port: 切换一个instance的master/slave状态
slaveof 127.0.0.1 6400  如果最初是master,则会切换成slave
slaveof no one ,将slave切换成master

其余的cluster相关的命令都是和redis服务器系统管理有关。

 

 

 

 

 

你可能感兴趣的:(环境维护)