redis-cli是原生redis自带的命令行工具,可以帮助我们通过简单的命令连接redis服务,并进行数据管理,即redis键(key)和redis数据结构的管理。
关于如何进入redis-cli命令行客户端,请查看文章:Redis安装部署(基于windows平台)
1.操作键
Redis键操作是Redis数据库中非常重要和常用的操作。下面,通过一张表来介绍一下常用的Redis键操作命令及相关说明,具体如表所示。
上述指令实际使用时大小写都可以
1.1 SET命令
使用SET命令为指定键设置值。具体语法如下
SET key value
上述语法中,SET是为指定键设置值的命令,若是所指定的键不存在,则创建键,否则进行覆盖操作;key表示键;value表示为指定键设置的值。
下面,我们演示为键company指定值itcast,具体如下:
127.0.0.1:6379> set company itcast
从上述返回结果“OK”可以看出,我们成功为键company指定值itcast。
1.2 MSET命令
使用MSET命令为多个键设置值,具体语法如下:
MSET key1 value1 key2 value2 ... keyN valueN
上述语法中,MSET是为多个键设置值的命令,若是键不存在,则创建键,否则进行覆盖操作;key1、key2、…、keyN表示键;value1、value2、…、valueN表示要为对应键设置的值。
下面,我们演示为键brand1设置值java、键brand2设置值c++、键brand3设置值python、键brand4设置值c#、键brand5设置值c、键brand6设置值go,具体如下:
127.0.0.1:6379> mset brand1 "java" brand2 "c++" brand3 "python" brand4 "c#" brand5 "c" brand6 "go"
从上述返回结果“OK”可以看出,我们成功为键brand1、brand2、brand3、brand4、brand5和brand6分别指定值。
1.3 KEYS命令
使用KEYS命令查找所有符合给定模式pattern(正则表达式)的键,具体语法如下:
KEYS PATTERN
上述语法中,KEYS是查找所有符合给定模式pattern(正则表达式)键的命令;PATTERN是模式,也可以为正则表达式。
下面,我们演示查找所有键,具体如下:
从上述返回结果可以看出,一共有七个键,其中键company是执行“SET”命令创建的,键brand1、brand2、brand3、brand4、brand5、brand6是执行“MSET”命令创建。
1.4 GET命令
使用GET命令获取指定键的值,具体语法如下:
GET key
上述语法中,GET是用于获取指定键的值的命令;key表示键。
下面,我们演示获取键company的值,具体如下:
127.0.0.1:6379> get company
从上述返回结果“itcast”可以看出,键company的值为itcast,说明我们成功获取到键company的值。
1.5 MGET命令
使用MGET命令获取多个键的对应值,具体语法如下:
MGET key1 key2 ...
上述语法中,MGET是用于获取指定多个键的值的命令;key1、key2 …表示多个键。
下面,我们演示获取键brand1、brand2、brand3以及brand的值,具体如下:
127.0.0.1:6379> mget brand1 brand2 brand3 brand
从上述返回结果可以看出,键brand1、brand2以及brand3的值分别为heima、chuanzhihui及kudingyu,而键brand的值为nil,这是因为键brand并不存在,因此返回特殊值nil。
1.6 DUMP命令
使用DUMP命令序列化指定的键,并返回被序列化的值,具体语法如下:
DUMP key
上述语法中,DUMP是用于序列化指定的键并返回被序列化的值的命令;key表示键。
下面,我们演示序列化键company,并返回被序列化的值,具体如下:
127.0.0.1:6379> dump company
从上述返回结果可以看出,键company已经被序列化,并且被序列化的值为"\x00\x06itcast\x06\x00C\x86296^\x8b\xe3"。
1.7 EXISTS命令
使用EXISTS命令判断指定键是否存在,具体语法如下:
EXISTS key
上述语法中,EXISTS是用于判断指定键是否存在的命令;key表示键。
下面,我们演示判断键brand6和brand7是否存在,若存在,则返回1,反之返回0,具体如下:
从上述返回结果可以看出,键brand6存在,而键brand7不存在。
1.8 TYPE命令
使用TYPE命令查看指定键的类型,具体语法如下:
TYPE key
上述语法中,TYPE是用于查看指定键的类型的命令;key表示键。
下面,我们演示查看键company的类型,具体如下:
127.0.0.1:6379> type company
从上述返回结果可以看出,键company的类型为string类型。
1.9 RENAME命令
使用RENAME命令修改指定键的名称,具体语法如下:
RENAME key newkey
上述语法中,RENAME是用于修改指定键名称的命令;key表示旧键;newkey表示新键。
下面,我们演示将键company改为newcompany,并执行“keys *”命令,查看键是否被修改成功,具体如下:
127.0.0.1:6379>rename company newcompany
从上述返回结果可以看出,键company已经更改为newcompany。
1.10 EXPIRE命令
使用EXPIRE命令设置键的生存时间,具体语法如下:
EXPIRE key seconds
上述语法中, EXPIRE是用于设置指定键生存时间的命令;key表示键;seconds表示设置的时间,以秒计。
下面,我们演示将键brand6的生存时间设置为300s,具体如下:
127.0.0.1:6379> expire brand6 300
从上述返回结果“1”可以看出,键brand6的生存时间已经成功设置为300s,即300s后该键会消失。
1.11 TTL命令
使用TTL命令查看指定键的剩余过期时间,具体语法如下:
TTL key
上述语法中,TTL是用于查看指定键剩余过期时间的命令;key表示键。
下面,我们演示查看键brand6的剩余过期时间,具体如下:
127.0.0.1:6379> ttl brand6
从上述返回结果“209”可以看出,键brand6的剩余生存时间为209s。若是键brand6不存在(即过期)则返回“-2”.若键未设置生存时间,则返回-1.
1.12 PERSIST命令
使用PERSIST命令移除指定键的生存时间,即将键从带生存时间的状态转换为持久存在的状态,具体语法如下:
PERSIST key
上述语法中,PERSIST是用于移除指定键的生存时间的命令;key表示键。
下面,我们演示移除键brand6的生存时间,具体如下:
127.0.0.1:6379> persist brand6
从上述返回结果“1”可以看出,键brand6的生存时间已被成功移除。
1.13 DEL命令
使用DEL命令删除指定键,具体语法如下:
DEL key
上述语法中,DEL是用于删除指定键的命令;key表示键。
下面,我们演示删除键brand6,并执行“keys *”命令,查看键brand6是否还存在(注意,若前面键brand6设置的生存时间较短的话,未执行删除操作,该键就已经不存在了),具体如下:
从上述返回结果可以看出,键brand6已经被成功删除。
2.操作字符串
String字符串是Redis中最基本也是最简单的数据结构,Redis为String字符串提供了相关操作命令。下面,通过一张表来介绍一下常用的String操作命令及相关说明,具体如表所示。
2.1 SET命令
使用SET命令为指定字符串键设置值,该命令与操作键的命令一致,具体语法如下:
SET key value
上述语法中,SET是为指定字符串设置值的命令,若是所指定的字符串键不存在,则进行创建操作,否则进行覆盖操作;key表示字符串键;value表示为字符串键设置的值。
下面,我们演示为字符串键website设置值www.itcast.cn,具体如下:
2.2 MSET命令
使用MSET命令为多个字符串键设置对应的值,具体语法如下:
MSET key value [key value ...]
上述语法中,MSET是为多个字符串键设置对应值的命令,若是该字符串不存在,则进行创建操作,否则进行覆盖操作;key表示字符串的键;value表示字符串键设置的值;[key value …]表示可以为多个字符串键设置对应的值。
下面,我们演示为字符串键website1设置值www.itheima.com、字符串键website2设置值www.boxuegu.com及字符串键website3设置值www.ityxb.com,具体如下:
127.0.0.1:6379> mset website1 "www.itheima.com" website2 "www.boxuegu.com" website3 "www.ityxb.com"
从上述返回结果“OK”可以看出,我们成功为字符串键website1、website2以及website3分别设置对应的值。
2.3 GET命令
使用GET命令获取指定字符串键的值,具体语法如下:
GET key
上述语法中,GET是用于获取指定字符串键值的命令;key表示字符串键。
下面,我们演示获取字符串website的值,具体如下:
2.4 MGET命令
使用MGET命令获取多个字符串键的对应值,具体语法如下:
MGET key1 key2 ...
上述语法中,MGET是用于获取指定多个键的值的命令;key1、key2 …表示多个键。
下面,我们演示获取字符串键website1、website2、website3以及website5的值,具体如下:
127.0.0.1:6379> mget website1 website2 website3 website5
从上述返回结果可以看出,字符串键website1、website2、website3的值分别为www.itheima.com、www.boxuegu.com及www.ityxb.com,而字符串键website5的值为nil,这是因为字符串键website5并不存在,因此返回特殊值nil。
2.5 GETSET命令
使用GETSET命令获取指定字符串键的旧值并设置新值,具体语法如下:
GETSET key value
上述语法中,GETSET是用于获取指定字符串键的旧值并设置新值;key表示字符串键;value表示字符串键的新值。若指定字符串键存在,则返回该键的旧值,反之返回nil特殊值。
下面,我们演示获取字符串键website4的旧值并设置新值,并执行“getset website4 “www.itczh.com””获取该字符串键website的旧值并设置新值,然后执行“get website4”命令,查看字符串键website4是否被成功设置新值,具体如下:
从上述返回结果可以看出,最开始字符串键website4不存在,因此返回特殊值nil,当第一次执行“getset”命令后,字符串键website4就被指定值为www.kudingyu.com,第二次执行“getset”命令设置字符串键website4新值后,返回了字符串键website4的旧值www.kudingyu.com。
2.6 STRLEN命令
使用STRLEN命令获取指定字符串键值的长度,具体语法如下:
STRLEN key
上述语法中,STRLEN是用于获取指定字符串键值的长度;key表示字符串键。
下面,我们演示获取字符串键website4值的长度,具体如下:
从上述返回结果“13”可以看出,字符串键website4的值的长度为13,即www.itczh.com的长度为13个字节长度。
2.7 GETRANGE命令
使用GETRANGE命令获取字符串键指定索引范围的值内容,具体语法如下:
GETRANGE key start end
上述语法中,GETRANGE是用于获取字符串键指定索引范围的值内容;key表示字符串键;start表示范围的起始索引;end表示范围的结束索引。
下面,我们演示获取字符串键website指定索引范围在[4,9]的值内容,具体如下:
127.0.0.1:6379> getrange website 4 9
从这里可以看出,索引从0开始计数。
2.8 SETRANGE命令
使用SETRANGE命令为字符串键的指定索引位置替换值,具体语法如下:
SETRANGE key offset value
上述语法中,SETRANGE是用于为字符串键的指定索引位置替换值的命令;key表示字符串键;offset表示偏移量;value表示为字符串键的指定索引位置替换值。
下面,我们演示为字符串键website的索引为4的位置替换值为nosql,并通过执行“get website”获取该字符串键的值,查看是否成功为字符串键website替换值,具体如下:
从上述返回结果可以看出,字符串键website在索引为4的位置处替换值为nosql,由于itcast包含5个字节,从位置为0处作为起点,位置为4处作为终点,替换为nosql,因此说明我们成功为字符串键website的指定位置替换值。
2.9 APPEND命令
使用APPEND命令为指定字符串键的值末尾追加新内容,具体语法如下:
APPEND key value
上述语法中,APPEND是用于为指定字符串键的值末尾追加新内容的命令;key表示字符串键;value表示追加的新内容。
下面,我们演示为字符串键website的值的末尾追加itcast,并通过执行“get website”获取该字符串键的值,查看是否成功为字符串键website的值的末尾追加新内容,具体如下:
127.0.0.1:6379>append website "itcast"
从上述返回结果可以看出,字符串键website的值末尾的内容为itcast,因此说明我们成功为字符串键website的值末尾追加内容itcast。
3. 操作list 列表
List列表是一种线性的有序结构,Redis为List列表提供了相关的操作命令。下面,通过一张表来介绍一下常用的List操作命令及相关说明,具体如表所示。
3.1 RPUSH命令
使用RPUSH命令将一个或多个元素推入到列表的右端,具体语法如下:
RPUSH key value
上述语法中,RPUSH是将一个或多个元素推入到列表的右端的命令,若是所指定的列表不存在,则会创建空列表,然后往该列表中推入元素;key表示列表;value表示为指定列表插入的元素值。
下面,我们演示依次将元素blue、green、purple、red、white推入到列表color的右端,并执行“lrange color 0 -1”命令,查看是否已经将五个元素推入到列表color的右端,具体如下边所示:
从返回结果可以看出,我们成功将元素blue、green、purple、red、white五个元素推入到列表color的右端。
若同时推多个元素,直接在value位置排列即可,如:
3.2 LPUSH命令
使用LPUSH命令将一个或多个元素推入到列表的左端,具体语法如下:
LPUSH key value
上述语法中,LPUSH是将一个或多个元素推入到列表的左端的命令,若是所指定的列表不存在,则会创建空列表,然后往该列表中推入元素;key表示列表;value表示为指定列表推入的元素值。
下面,我们演示依次将元素apple、banana、mango推入到列表color的左端,并执行“lrange color 0 -1”命令,查看是否已经将三个元素推入到列表color的左端,具体如下边所示:
从返回结果可看出,我们成功往列表中推入11个元素,其中有8个元素是执行“rpush”命令推入到列表color中,三个元素是执行“lpush”命令推入到列表color中。
3.3LRANGE命令
使用LRANGE命令获取列表指定索引范围内的元素,具体语法如下:
LRANGE key start stop
上述语法中,LRANGE是用于获取列表指定索引范围内的元素;key表示列表;start表示起始索引;end表示结束索引。
下面,我们演示获取列表color指定索引范围[0,7]的元素,具体如下:
3.4 LINDEX命令
使用LINDEX命令获取列表指定索引位置上的元素,具体语法如下:
LINDEX key index
上述语法中,LINDEX是用于获取列表指定索引位置上的元素的命令;key表示列表;index表示索引位置。
下面,我们演示获取列表color中索引位置为3的元素,具体如下:
3.5 RPOP命令
使用RPOP命令移除列表最右端的元素,具体语法如下:
RPOP key
上述语法中,RPOP是用于移除列表最右端元素的命令;key表示列表。
下面,我们演示移除列表color最右端的元素,并执行“lrange color 0 -1”命令,查看最右端的元素是否被移除,具体如下:
3.6 LPOP命令
使用LPOP命令移除列表最左端的元素,具体语法如下:
LPOP key
上述语法中,RPOP是用于移除列表最右端元素的命令;key表示列表。
下面,我们演示移除列表color最左端的元素,并执行“lrange color 0 -1命令,查看最左端的元素是否被移除,具体如下:
3.7 LLEN命令
使用LLEN命令获取列表中值的长度,也就是元素的个数,具体语法如下:
LLEN key
上述语法中,LIND是用于获取列表中值的长度的命令;key表示列表。
下面,我们演示获取列表color中值的长度,也就是元素的个数,具体如下:
3.8 LREM命令
使用LREM命令移除列表中的指定元素,具体语法如下:
LREM key count value
上述语法中,LREM是用于移除列表中的指定元素的命令;key表示列表;count参数的值决定了LREM命令移除元素的方式,
若是count>0,则从列表头开始向列表尾搜索,移除与value相等的元素,数量为count的绝对值;
若是count<0,则从列表尾开始向列表头搜索,移除与value相等的元素,数量为count 的绝对值;
若是count=0,移除列表中所有与value相等的值;value表示要移除的元素。
下面,先执行“rpush color “hello” “hello” “world” “hello””命令,往列表mycolor的右端推入4个元素,然后再演示从左往右移除列表mycolor中值为hello的两个元素,并执行“lrange mycolor 0 -1命令,查看列表中值为hello的2个元素是否被移除,具体如下:
操作集合
Sets集合是Redis的基本数据结构之一。Redis为Sets集合提供了相关的操作命令。下面,通过一张表来介绍一下常用的Sets操作命令及相关说明,具体如表所示。
4.1 SADD命令
使用SADD命令将一个或多个元素添加到集合中,具体语法如下:
SADD key member [member…]
上述语法中,SADD是将一个或多个元素添加到集合中的命令,若是所指定的集合不存在,则创建集合,并将元素添加进该集合中;key表示集合;member [member…]表示一个或多个元素。
下面,我们演示将元素redis、mongodb、hbase添加到集合databases中,具体如下:
4.2 SCARD命令
使用SCARD命令获取集合中的元素数量,具体语法如下:
SCARD key
上述语法中,SCARD是获取集合中元素数量的命令;key表示集合。
下面,我们演示获取集合databases中的元素数量,具体如下:
4.3 SMEMBERS命令
使用SMEMBERS命令获取集合中的所有元素,具体语法如下:
SMEMBERS key
上述语法中,SMEMBERS是用于获取集合中所有元素的命令;key表示集合。
下面,我们演示获取集合databases中的所有元素,具体如下:
4.4 SISMEMBER命令
使用SISMEMBER命令判断指定元素是否存在于集合中,具体语法如下:
SISMEMBER key member
上述语法中,SISMEMBER用于判断指定元素是否存在于集合中的命令;key表示集合;member表示需要判断的元素。
下面,我们演示检查元素redis是否存在于集合databases,若存在则返回1,反之返回0,具体如下:
4.5 SREM命令
使用SREM命令移除集合中的一个或多个已存在的元素,具体语法如下:
SREM key member [member…]
上述语法中,SREM是用于移除集合中的一个或多个已存在元素的命令;key表示集合;member [member…]表示一个或多个元素。
下面,我们演示移除集合databases中的元素hbase,并执行“smembers databases”命令,查看元素hbase是否被移除,具体如下:
4.6 SMOVE命令
使用SMOVE命令将元素从一个集合移动到另一个集合,具体语法如下:
SMOVE source destination member
上述语法中,SMOVE是用于将元素从一个集合移动到另一个集合的命令;source表示原始集合;destination表示目标集合;member表示要移动的元素。
下面,我们演示将元素redis从集合databases中移动到集合databasesNew中(注:首先执行“sadd databasesNew “mysql””命令,创建集合databasesNew并插入元素“mysql”,并执行“smove databases databasesNew redis”命令,查看是否成功将元素redis从集合databases中移动到databasesNew中,具体如下:
5.操作散列
Hash散列也是Redis的基本数据结构之一。Redis为Hash散列提供了客户端的操作命令。下面,通过一张表来介绍一下常用的Hash操作命令及相关说明,具体如表所示。
5.1 HSET命令
使用HSET命令为散列中指定键设置值,具体语法如下:
HSET key field value
上述语法中,HSET是用于为散列中指定键设置值的命令,若是散列不存在,则会创建一个新的散列,并进行HSET操作,反之进行覆盖操作;key表示散列;field表示散列中的键;value表示键对应的值。
下面,我们演示为散列article中的键title设置值greeting,若是散列article中不存在指定键title,则进行创建和赋值操作,并返回1,若是散列article中存在键title,则进行覆盖操作,并返回0,具体如下:
5.2 HMSET命令
使用HMSET命令为散列中多个键设置值,具体语法如下:
HMSET key field value [field value ...]
上述语法中,HMSET是用于为散列中的多个键设置值的命令;key表示散列;field value [field value …]表示散列中的一个或多个键及其对应的值。
下面,我们演示为散列article中的键content、author分别设置值Hello World、peter,具体如下:
5.3 HGET命令
使用HGET命令获取散列中指定键的值,具体语法如下:
HGET key field
上述语法中,HGET是用于获取散列中指定键的值的命令;key表示散列;field表示散列中的键。
下面,我们演示获取散列article中键title的值,具体如下:
5.4 HMGET命令
使用HMGET命令获取散列中多个键的值,具体语法如下:
HMGET key field [field ...]
上述语法中,HMGET是用于获取散列中多个键的值的命令;key表示散列;field [field …]表示散列中的一个或多个键。
下面,我们演示获取散列article中键content和键author的值,具体如下:
5.5 HGETALL命令
使用HGETALL命令获取散列中的所有键值对,具体语法如下:
HGETALL key
上述语法中,HMGET是用于获取散列中的所有键值对的命令;key表示散列。
下面,我们演示获取散列article中所有的键值对,具体如下:
5.6 HKEYS命令
使用HKEYS命令获取散列中的所有键,具体语法如下:
HKEYS key
上述语法中,HKEYS是用于获取散列中的所有键的命令;key表示散列。
下面,我们演示获取散列article中所有的键,具体如下:
5.7 HVALS命令
使用HVALS命令获取散列中的所有键的值,具体语法如下:
HVALS key
上述语法中,HVALS是用于获取散列中的所有键的值的命令;key表示散列。
下面,我们演示获取散列article中所有键的值,具体如下:
5.8 HDEL命令
使用HDEL命令删除散列中指定键及其相对应的值,具体语法如下:
HDEL key field [field ...]
上述语法中,HDEL是用于删除散列中指定键及其相对应的值的命令;key表示散列;field [field …]表示散列中的一个或多个键。
下面,我们演示删除散列article中键title及其对应的值greeting,并通过执行“hgetall article”命令,查看键title及其对应的值greeting是否被删除,具体如下:
6.操作有序集合
Sorted Sets有序集合是Redis中最为灵活的数据结构。Redis为Sorted Sets有序集合提供了客户端的操作命令。下面,通过一张表来介绍一下常用的Sorted Sets操作命令及相关说明,具体如表所示。
6.1 ZADD命令
使用ZADD命令为有序集合添加一个或多个键值对,具体语法如下:
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
上述语法中,ZADD是用于为有序集合添加一个或多个键值对的命令;key表示有序集合;
[NX|XX]、[CH]、[INCR]为可选参数,
[NX|XX]表示不更新或更新存在的元素, NX表示不只添加新元素,XX表示不添加新元素;
[CH]表示返回发生变化的元素总数;
[INCR]表示指定元素按照分值进行递增操作;
score member [score member …]表示有序集合的一个或多个的键值对,其中score表示键值对中的键,即分值,member表示键值对中的值,即元素。
下面,我们演示为有序集合salary添加三个键值对,分别为“分值5000,元素Peter”、“分值3500,元素Tom”以及“分值6000,元素Jack”,具体如下:
6.2 ZCARD命令
使用ZCARD命令获取有序集合中元素的个数,具体语法如下:
ZCARD key
上述语法中,ZCARD是用于获取有序集合中元素的个数的命令;key表示有序集合。
下面,我们演示获取有序集合salary中元素的个数,具体如下:
6.3 ZCOUNT命令
使用ZCOUNT命令统计有序集合中指定分值范围内的元素个数,具体语法如下:
ZCOUNT key min max
上述语法中,ZCOUNT是用于统计有序集合中指定分值范围内的元素个数的命令;key表示有序集合;min表示区间范围的最小值;max表示分值范围的最大值。
下面,我们演示统计有序集合salary中分值范围在[2000,5000]内的元素个数,具体如下:
6.4 ZRANGE命令
使用ZRANGE命令获取有序集合中指定索引范围内的元素,具体语法如下:
ZRANGE key start stop
上述语法中,ZRANGE是用于获取有序集合中指定索引范围内元素的命令;key表示有序集合;start表示起始索引;stop表示终止索引。
下面,我们演示获取有序集合salary中指定索引范围[0,1]内的元素,具体如下:
6.5 ZSCORE命令
使用ZSCORE命令获取有序集合中指定元素的分值,具体语法如下:
ZSCORE key member
上述语法中,ZSCORE是用于获取有序集合中指定元素的分值的命令;key表示有序集合;member表示有序集合中的元素。
下面,我们演示获取有序集合salary中指定元素Peter的分值,具体如下:
6.6 ZREM命令
使用ZREM命令移除有序集合中的指定元素,具体语法如下:
ZREM key member [member ...]
上述语法中,ZREM是用于获取有序集合中指定元素分值的命令;key表示有序集合;member [member …]表示有序集合中的一个或多个元素。
下面,我们演示移除有序集合salary中的指定元素Jack,并执行“zrange salary 0 -1”命令,查看元素Jack是否被移除,具体如下: