命令

redis的常用命令主要分为两个方面、一个是键值相关命令、一个是服务器相关命令

1、键值相关命令

      keys * 取出当前所有的key

      exists name 查看n是否有name这个key

      del name 删除key name

      expire confirm 100 设置confirm这个key100秒过期

      ttl confirm 获取confirm 这个key的有效时长

      select 0 选择到0数据库 redis默认的数据库是0~15一共16个数据库

      move confirm 1 将当前数据库中的key移动到其他的数据库中,这里就是把confire这个key从当前数据库中移动到1中

      persist confirm 移除confirm这个key的过期时间

      randomkey 随机返回数据库里面的一个key

      rename key2 key3 重命名key2 为key3

      type key2 返回key的数据类型

2、服务器相关命令

      ping PONG返回响应是否连接成功

      echo 在命令行打印一些内容

      select 0~15 编号的数据库

      quit  /exit 退出客户端

      dbsize 返回当前数据库中所有key的数量

      info 返回redis的相关信息

      config get dir/* 实时传储收到的请求

      flushdb 删除当前选择数据库中的所有key

      flushall 删除所有数据库中的数据库

 

 

 

Redis 是一个开源,高级的键值对的存储。它经常作为服务端的数据结构,它的键的数据类型能够是strings, hashs, lists, sets(无序集合) 和 sorted sets(有序集合).

如果我们要在windows下使用redis作为学习之用,可以去https://github.com/dmajkic/redis/downloads 下载最新的windows下的redis,最新的版本目前是2.4.5

现在完成以后可以解压,有2个文件夹,分别对应的是32位的windows, 64位的windows。

笔者的电脑是32位的win7 专业版,所以打开32的那个文件夹,可以看看一些config, exe文件,双击 redis-server.exe运行。可以看到一些信息:

端口号:6379;使用了redis.conf配置文件;redis的版本号:2.4.5;还有就是客户端的连接数。

此时,可以双击 redis-cli.exe 运行一个客户端,运行后可以看到redis 127.0.0.1:6379

此时可以通过一个命令来展示redis的功能。redis的命令如下:

连接控制

QUIT 关闭连接

AUTH (仅限启用时)简单的密码验证

适合全体类型的命令

EXISTS key 判断一个键是否存在;存在返回 1;否则返回0;

DEL key 删除某个key,或是一系列key;DEL key1 key2 key3 key4

TYPE key 返回某个key元素的数据类型 ( none:不存在,string:字符,list,set,zset,hash)

KEYS pattern 返回匹配的key列表 (KEYS foo*:查找foo开头的keys)

RANDOMKEY 随机获得一个已经存在的key,如果当前数据库为空,则返回空字符串

RENAME oldname newname更改key的名字,新键如果存在将被覆盖

RENAMENX oldname newname 更改key的名字,如果名字存在则更改失败

DBSIZE返回当前数据库的key的总数

EXPIRE设置某个key的过期时间(秒),(EXPIRE bruce 1000:设置bruce这个key1000秒后系统自动删除)注意:如果在还没有过期的时候,对值进行了改变,那么那个值会被清除。

TTL查找某个key还有多长时间过期,返回时间秒

SELECT index 选择数据库

MOVE key dbindex 将指定键从当前数据库移到目标数据库 dbindex。成功返回 1;否则返回0(源数据库不存在key或目标数据库已存在同名key);

FLUSHDB 清空当前数据库中的所有键

FLUSHALL 清空所有数据库中的所有键

处理字符串的命令

SET key value 给一个键设置字符串值。SET keyname datalength data (SET bruce 10 paitoubing:保存key为burce,字符串长度为10的一个字符串paitoubing到数据库),data最大不可超过1G。

GET key获取某个key 的value值。如key不存在,则返回字符串“nil”;如key的值不为字符串类型,则返回一个错误。

GETSET key value可以理解成获得的key的值然后SET这个值,更加方便的操作 (SET bruce 10 paitoubing,这个时候需要修改bruce变成1234567890并获取这个以前的数据paitoubing,GETSET bruce 10 1234567890)

MGET key1 key2 … keyN 一次性返回多个键的值

SETNX key value SETNX与SET的区别是SET可以创建与更新key的value,而SETNX是如果key不存在,则创建key与value数据

MSET key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性设置多个键和值

MSETNX key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性设置多个键和值(目标键不存在情况下,如果有一个以上的key已存在,则失败)

INCR key 自增键值

INCRBY key integer 令键值自增指定数值

DECR key 自减键值

DECRBY key integer 令键值自减指定数值

处理 lists 的命令

RPUSH key value 从 List 尾部添加一个元素(如序列不存在,则先创建,如已存在同名Key而非序列,则返回错误)

LPUSH key value 从 List 头部添加一个元素

LLEN key 返回一个 List 的长度

LRANGE key start end从自定的范围内返回序列的元素 (LRANGE testlist 0 2;返回序列testlist前0 1 2元素)

LTRIM key start end修剪某个范围之外的数据 (LTRIM testlist 0 2;保留0 1 2元素,其余的删除)

LINDEX key index返回某个位置的序列值(LINDEX testlist 0;返回序列testlist位置为0的元素)

LSET key index value更新某个位置元素的值

LREM key count value 从 List 的头部(count正数)或尾部(count负数)删除一定数量(count)匹配value的元素,返回删除的元素数量。

LPOP key 弹出 List 的第一个元素

RPOP key 弹出 List 的最后一个元素

RPOPLPUSH srckey dstkey 弹出 _srckey_ 中最后一个元素并将其压入 _dstkey_头部,key不存在或序列为空则返回“nil”

处理集合(sets)的命令(有索引无序序列)

SADD key member增加元素到SETS序列,如果元素(membe)不存在则添加成功 1,否则失败 0;(SADD testlist 3 \n one)

SREM key member 删除SETS序列的某个元素,如果元素不存在则失败0,否则成功 1(SREM testlist 3 \N one)

SPOP key 从集合中随机弹出一个成员

SMOVE srckey dstkey member 把一个SETS序列的某个元素 移动到 另外一个SETS序列 (SMOVE testlist test 3\n two;从序列testlist移动元素two到 test中,testlist中将不存在two元素)

SCARD key 统计某个SETS的序列的元素数量

SISMEMBER key member 获知指定成员是否存在于集合中

SINTER key1 key2 … keyN 返回 key1, key2, …, keyN 中的交集

SINTERSTORE dstkey key1 key2 … keyN 将 key1, key2, …, keyN 中的交集存入 dstkey

SUNION key1 key2 … keyN 返回 key1, key2, …, keyN 的并集

SUNIONSTORE dstkey key1 key2 … keyN 将 key1, key2, …, keyN 的并集存入 dstkey

SDIFF key1 key2 … keyN 依据 key2, …, keyN 求 key1 的差集。官方例子:

key1 = x,a,b,c

key2 = c

key3 = a,d

SDIFF key1,key2,key3 => x,b

SDIFFSTORE dstkey key1 key2 … keyN 依据 key2, …, keyN 求 key1 的差集并存入 dstkey

SMEMBERS key 返回某个序列的所有元素

SRANDMEMBER key 随机返回某个序列的元素

处理有序集合(sorted sets)的命令 (zsets)

ZADD key score member 添加指定成员到有序集合中,如果目标存在则更新score(分值,排序用)

ZREM key member 从有序集合删除指定成员

ZINCRBY key increment member 如果成员存在则将其增加_increment_,否则将设置一个score为_increment_的成员

ZRANGE key start end 返回升序排序后的指定范围的成员

ZREVRANGE key start end 返回降序排序后的指定范围的成员

ZRANGEBYSCORE key min max 返回所有符合score >= min和score <= max的成员 ZCARD key 返回有序集合的元素数量 ZSCORE key element 返回指定成员的SCORE值 ZREMRANGEBYSCORE key min max 删除符合 score >= min 和 score <= max 条件的所有成员

排序(List, Set, Sorted Set)

SORT key BY pattern LIMIT start end GET pattern ASC|DESC ALPHA 按照指定模式排序集合或List

SORT mylist

默认升序 ASC

SORT mylist DESC

SORT mylist LIMIT 0 10

从序号0开始,取10条

SORT mylist LIMIT 0 10 ALPHA DESC

按首字符排序

SORT mylist BY weight_*

SORT mylist BY weight_* GET object_*

SORT mylist BY weight_* GET object_* GET #

SORT mylist BY weight_* STORE resultkey

将返回的结果存放于resultkey序列(List)

持久控制

SAVE 同步保存数据到磁盘

BGSAVE 异步保存数据到磁盘

LASTSAVE 返回上次成功保存到磁盘的Unix时间戳

SHUTDOWN 同步保存到服务器并关闭 Redis 服务器(SAVE+QUIT)

BGREWRITEAOF 当日志文件过长时重写日志文件

远程控制命令

INFO 提供服务器的信息和统计信息

MONITOR 实时输出所有收到的请求

SLAVEOF 修改复制选项 

 

配置

1.Redis默认不是以守护进程的方式运行,可以修改配置启动

daemonize no

2.制定Redis端口,默认是6379,因为6379在手机按键上对应MERZ的号码,取自意大利歌女Merz的名字

port 6379

3.绑定的主机地址

bind 127.0.0.1

4.当客户端闲置多长时间后关闭链接,如果指定为0,表示关闭该功能

timeout 300

5.设置数据库数量,默认数据库为0,可以使用select <dbid>指定连接数据库ID

databases 16

6.指定在多长时间内,有多少次更新操作,就将数据同步到数据文件中,可以多个条件组合

save <seconds> <changes>

redis默认是如下配置

save 900 1

save 3000 10

save 60 10000

7.指定存储至本地数据库是否是否压缩,默认是yes,Redis采用LZF压缩,如果为了节省CPU的时间,可以将这个关闭,但是会造成数据文件增大

rdbcomppression yes

8.指定本地数据库存放目录

dir ./

9.设置当本机为slav的时候,设置master的IP和端口,当Redis启动的时候,会自动同步master的数据

slaveof <masterip> <masterport>

10.当master设置了密码的时候,slav连接master的密码

masterauth <master-password>

11.连接Redis的时候,如果配置了密码,通过auth <password>来输入密码验证,默认关闭

requirepass foobared

12.设置同一时间最大客户端连接数,默认无限制

maxclients 128

13.指定Redis最大内存限制,Redis启动的时候会把数据加载到内存中,达到内存最大的是,Redis会尝试清除过期或者即将过期的key,当尝试过以后,仍然达到最大值,将无法继续写入操作,但是可以读取。Redis的vm机制,会把key存放在内存中,value存放在swap区域

maxmemory <bytes>

14.指定是否在每次更新操作后进行日志记录,Redis默认是异步将数据写入磁盘,如果不开启,可能会在断电时导致一定时间内的数据丢失

appendonly on

15.指定是否启动虚拟内存机制,默认是no,vm机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘中,访问多的页面由磁盘自动换出到内存中

vm-enabled no

16.设置在向客户端应答的时候,是否将较小的包合并到一个包发送,默认是开启

glueoutputbuf yes

17.超过一定的数量或者最大的元素超过一定的临界值,采用特殊的哈希算法

hash-max-zipmap-entries 64

hash-max-zipmap-value 512