一、与redis服务器和客户端相关的命令
1、后端启动服务器:./redis-server redis.conf;(在redis/bin目录下执行)
2、启动客户端:./redis-cli;(在redis/bin目录下执行)
3、退出客户端:exit或者quit;
4、停止服务器
方式一:在连接客户端的状态下直接输入命令 shutdown,然后再输入命令 exit;
方式二:在退出客户端之后,使用命令 ./redis-cli shutdown;
5、查看redis相关的进程:ps aux|grep redis;
二、与key相关的基本命令
1、set key value:设值,例 set a 10返回OK(使用set时,如果key存在会直接覆盖掉key原来的值,不存在就设置新的值);
2、get key:取值,例 get a返回key的值;
3、del key:删除,例 del a 返回删除的key数量(del key1 key2 ...可以删除多个key);
4、exists key:检查key是否存在,例 exists a (返回1代表存在,0代表不存在);
5、dump key:返回key序列化之后的值,例 dump a ;
6、expire key seconds:设置过期时间(秒),例 expire a 1000返回1代表设置成功(1000秒后不可用);
7、pexpire key milliseconds:设置过期时间(毫秒),例 pexpire a 1000返回1代表设置成功(1000毫秒之后不可用);
8、ttl key:查看过期时间(以秒为单位),例 ttl a返回-1代表永久存在,返回-2代表key不存在;
9、pttl key:查看过期时间(以毫秒为单位),例 pttl a 返回-1代表永久存在,返回-2代表key不存在;
10、persist key:移除key的过期时间,例 persist a返回1代表操作成功(key将保持永久);
11、rename key new_key:生命名key,例 rename a b返回OK;
12、move key db_index:将key移动到指定index的db中,例 move a 1返回1代表移动成功;
13、select db_index:根据index切换db(redis默认有16个db),例 select 1返回OK代表切换成功(切换到下标为1的db中);
14、type key:获取key的数据类型,例 type a返回string;
15、keys *:显示当前db中的所有key,返回一个 value列表
附:特殊key用法,以组合键方式让key在redis中以目录层级方式存在
输入命令:set china:beijing:chaoyang 100万人
再输入命令:get china:beijing:chaoyang 可以得到值 100万人
其中,china:beijing:chaoyang 就是一个特殊的键,通过冒号进行连接,在客户端图形化界面中我们可以看到该key的层级存在方式,如下图:
三、五大数据类型以及相关命令
▶ 字符串(String):key-value的存储方式,一个key最大能存储512MB
1、incr key:整数值自增,例 set a 10,则 incr a返回11(非整数值返回ERROR);
2、decr key:整数值自减,例 set a 10,则 decr a返回9(非整数值返回ERROR);
3、getrange key begin end:截取字符串,例 set name beijing,则 getrange name 0 1 返回be(0 0返回b);
4、mset key1 value1 key2 value2 ...:设置多个key-value,例 mset x 10 y 20;
5、mget key1 key2 ...:获取一个或多个key的值,例 mget x y返回两个值;
6、setnx key value:只有key不存在时才设值(key存在时返回0),例 set a 10,则 setnx a 返回0;
7、strlen key:获取字符串的长度,例 set a 10,则 strlen a 返回2;
8、msetnx key1 value1 key2 value2 ...:设置多个不存在的key-value(只要有一个key存在都返回0);
9、incrby key increment:将key的整数值加上指定的增量,例 set a 15,则 incrby a 6返回21;
10、incrbyfloat key increment:将key的值加上指定的浮点增量,例 set a 15.2,则 incrbyfloat a 2.3返回17.5;
11、decrby key increment:将key的整数值减去指定的减量,例 set a 15,则 decrby a 5返回10;(貌似没有减去浮点值的命令)
12、append key value:将value追加到已经存在的key的值末尾(如果key不存在,就设置一个新的key-value),例 set a bei,则 append a jing返回key值的字符串长度(这里返回7);
▶哈希(Hash):是一个string类型field和value的映射表,适合存储对象,每个哈希可以存储40多亿健值对
1、hset key field value :将哈希表 key 中的字段 field 的值设为 value (如果key存在则覆盖value,返回是0)
127.0.0.1:6379> hset user1 username zhangsan(integer) 1
2、hget key field :获取存储在哈希表中指定字段的值
127.0.0.1:6379> hget user1 username"zhangsan"
3、hmset key field1 value1 field2 value2 ... :同时将多个field-value设置到哈希表中
127.0.0.1:6379> hmset user1 username zhangsan password 123OK
4、hmget key field1 field2 ... :获取哈希表中指定key的一个或多个field的value
127.0.0.1:6379> hmget user1 username password1) "zhangsan"2) "123"
5、hexists key field :查看哈希表中,指定的field是否存在(返回1代表存在)
127.0.0.1:6379> hexists user1 username(integer) 1
6、hdel key field1 field2 ... :删除哈希表中一个或多个field(返回删除field的数量)
127.0.0.1:6379> hdel user1 username password(integer) 2
7、hgetall key :获取哈希表中指定 key的所有字段和值
127.0.0.1:6379> hgetall user11) "username"2) "zhangsan"3) "password"4) "123"
8、hkeys key :获取哈希表中指定key的所有field
127.0.0.1:6379> hkeys user11) "username"2) "password"
9、hvals key :获取哈希表中指定key的所有value
127.0.0.1:6379> hvals user11) "zhangsan"2) "123"
10、hlen key :获取哈希表中指定key的field数量
127.0.0.1:6379> hlen user1(integer) 2
11、hsetnx key field value :只有当field不存在里,才设置哈希表field的value(field存在时,返回0)
127.0.0.1:6379> hsetnx user1 phone 13999999999(integer) 1
▶列表(List):它是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或尾部(右边),每个列表可以存储40多亿元素
1、lpush key value1 value2 ... :将一个或多个vaule插入到列表头部(返回插入的元素数量)127.0.0.1:6379> lpush city beijing chongqing(integer) 2
2、llen key :获取列表的长度
127.0.0.1:6379> llen city(integer) 2
3、lpop key :移出并获取列表的第一个元素
127.0.0.1:6379> lpop city"chongqing"
4、lpushx key value :将一个值插入已存在的列表头部(如果列表不存在,返回0)
127.0.0.1:6379> lpushx city chongqing(integer) 2
5、lrange key begin end :获取列表指定范围内的value
127.0.0.1:6379> lrange city 0 101) "chongqing"2) "beijing"
127.0.0.1:6379> lrange city 0 01) "chongqing"
6、lindex key index :通过索引获取列表中的值
127.0.0.1:6379> lindex city 0"chongqing"
7、lset key index value :通过索引来设置列表中的值(更改原有值)
127.0.0.1:6379> lset city 0 tianjingOK
127.0.0.1:6379> lrange city 0 101) "tianjing"2) "beijing"
8、linsert city before|after existing_value added_value :在列表的元素前或元素后添加元素
127.0.0.1:6379> linsert city before tianjing chongqing(integer) 3127.0.0.1:6379> lrange city 0 101) "chongqing"2) "tianjing"3) "beijing"
127.0.0.1:6379> lpop city"chongqing"127.0.0.1:6379> linsert city after tianjing chongqing(integer) 3127.0.0.1:6379> lrange city 0 101) "tianjing"2) "chongqing"3) "beijing"
9、ltrim key begin end :保留开始与结束范围内的列表值
127.0.0.1:6379> ltrim city 1 2OK127.0.0.1:6379> lrange city 0 101) "chongqing"2) "beijing"
10、lrem key count value :移除列表中与value相同的元素(count为任意数字)
127.0.0.1:6379> lrem city 1 beijing(integer) 1
11、rpop key :移除列表中的最后一个值
127.0.0.1:6379> lrange city 0 101) "chongqing"2) "beijing"3) "tianjing"127.0.0.1:6379> rpop city "tianjing"
12、rpop key value1 value2 ... :向列表尾部添加一个或多个value
127.0.0.1:6379> rpush city tianjing shanghai(integer) 4127.0.0.1:6379> lrange city 0 101) "chongqing"2) "beijing"3) "tianjing"4) "shanghai"
13、rpushx key value :为已经存在的列表尾部添加值(如果列表不存在,返回0)
127.0.0.1:6379> rpushx city shenzheng(integer) 5
▶无序集合(Set):元素唯一,不能重复,集合通过哈希表实现,复杂度为O(1),每个集合最多可存储40多亿元素
1、sadd key member1 member2 member3 ... :向集合中添加一个或多个成员
127.0.0.1:6379> sadd city beijing tianjing shanghai(integer) 3
2、scard key :获取集合的成员数
127.0.0.1:6379> scard city(integer) 3
3、sismber key memeber1 :判断元素是否是集合的成员(不是返回0)
127.0.0.1:6379> sismember city beijing(integer) 1
4、smembers city :返回集合中的所有成员
127.0.0.1:6379> smembers city1) "shanghai"2) "beijing"3) "tianjing"
5、smove set1 set2 member :将集合中的成员从集合一移动到集合二里面
127.0.0.1:6379> smove city city2 beijing(integer) 1
127.0.0.1:6379> smembers city1) "shanghai"2) "tianjing"127.0.0.1:6379> smembers city21) "beijing"
6、spop key :移除并返回集合中的一个随机元素
127.0.0.1:6379> spop city"shanghai"
7、srem key member1 member2 ... :移除集合中一个或多个元素(返回移除的数量)
127.0.0.1:6379> srem city tianjing(integer) 1
8、sinter key1 key2 ... :返回指定集合的交集
127.0.0.1:6379> sadd num1 1 2 3(integer) 3127.0.0.1:6379> sadd num2 2 3 4(integer) 3127.0.0.1:6379> sinter num1 num21) "2"2) "3"
9、sdiff key1 key2 ... :返回指定集合的差集
127.0.0.1:6379> sdiff num1 num21) "1"127.0.0.1:6379> sdiff num2 num11) "4"
10、sunion key1 key2 ... :返回指定集合的并集
127.0.0.1:6379> sunion num1 num21) "1"2) "2"3) "3"4) "4"
11、sunionstore other_set set1 set2 ... :将指定集合的并集存储在其他的集合中
127.0.0.1:6379> sunionstore num3 num1 num2(integer) 4127.0.0.1:6379> smembers num31) "1"2) "2"3) "3"4) "4"
▶有序集合(Sorted Set):元素唯一,不能重复,每个元素都会关联一个double类型的分数,通过分数为集合中的元素进行从小到大的排序,分数可以重复,每个集合最多可存储40多亿元素,由于Sorted Set在key成员大于64的时候同时使用了hash和skiplist两种设计实现,进行了性能优化,所以仅在查找时可以使用hash,复杂度为O(1),添加和删除都需要修改skiplist,复杂度为O(log(n)),其他的range操作一般复杂度为O(log(n)),如果小于64的话,复杂度为O(n)
1、zadd key score1 member1 score2 member2 ... :向集合中添加一个或多个成员,或者更新成员分数
127.0.0.1:6379> zadd city 1 beijing 2 tianjing 3.5 shanghai(integer) 3
2、zcard key :返回集合的成员数
127.0.0.1:6379> zcard city(integer) 3
3、zrange key start stop :通过索引返回指定区间的成员
127.0.0.1:6379> zrange city 0 101) "beijing"2) "tianjing"3) "shanghai"
4、zcount key min max :统计集合中指定分数之间的成员
127.0.0.1:6379> zcount city 1 2(integer) 2
5、zincrby key increment member :对集合中成员的分数进行增量(并返回分数值)
127.0.0.1:6379> zincrby city 5 beijing"6"
6、zinterstore key3 numkeys key1 key2 ...:将指定集合的交集存储在另外一个集合中(需要声明指定集合的数量)
127.0.0.1:6379> zadd city2 1 zhenzhou 2 wuhan 3 beijing 4 tianjing(integer) 4127.0.0.1:6379> zinterstore city3 2 city city2(integer) 2127.0.0.1:6379> zrange city3 0 101) "tianjing"2) "beijing"
7、zrangebyscore key start stop :返回指定分数区间的成员
127.0.0.1:6379> zrangebyscore city 0.5 6.51) "tianjing"2) "shanghai"3) "beijing"
8、zrank key member :返回指定成员的索引值
127.0.0.1:6379> zrank city beijing(integer) 2
9、zrem key member1 member2 ...:移除集合中指定的成员
127.0.0.1:6379> zrem city tianjing beijing (integer) 2
10、zscore key member :返回指定成员的分数值
127.0.0.1:6379> zscore city2 zhenzhou "1"
11、zremrangebyscore key start stop :移除集合中指定分数区间的成员
127.0.0.1:6379> zremrangebyscore city2 0 1(integer) 1127.0.0.1:6379> zrange city2 0 101) "wuhan"2) "beijing"3) "tianjing"
12、zrevrangebyscore key max min :通过分数从高到低排序返回集合中的成员
127.0.0.1:6379> zrevrangebyscore city2 10 01) "tianjing"2) "beijing"3) "wuhan"
关于五种数据类型还可以参考:Redis常见的5种不同的数据类型详解
如果觉得《Redis学习笔记(四)—— redis的常用命令和五大数据类型的简单使用》对你有帮助,请点赞、收藏,并留下你的观点哦!