Redis学习笔记(四)—— redis的常用命令和五大数据类型的简单使用

一、与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的层级存在方式,如下图:

Redis学习笔记(四)—— redis的常用命令和五大数据类型的简单使用_第1张图片

三、五大数据类型以及相关命令

▶ 字符串(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 123
OK

4、hmget key field1 field2 ... :获取哈希表中指定key的一个或多个field的value

127.0.0.1:6379> hmget user1 username password
1) "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 user1
1) "username"
2) "zhangsan"
3) "password"
4) "123"
8、hkeys key :获取哈希表中指定key的所有field

127.0.0.1:6379> hkeys user1
1) "username"
2) "password"
9、hvals key : 获取哈希表中指定key的所有value

127.0.0.1:6379> hvals user1
1) "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 10
1) "chongqing"
2) "beijing"
127.0.0.1:6379> lrange city 0 0
1) "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 tianjing
OK
127.0.0.1:6379> lrange city 0 10
1) "tianjing"
2) "beijing"
8、linsert city before|after existing_value added_value :在列表的元素前或元素后添加元素

127.0.0.1:6379> linsert city before tianjing chongqing
(integer) 3
127.0.0.1:6379> lrange city 0 10
1) "chongqing"
2) "tianjing"
3) "beijing"
127.0.0.1:6379> lpop city
"chongqing"
127.0.0.1:6379> linsert city after tianjing chongqing
(integer) 3
127.0.0.1:6379> lrange city 0 10
1) "tianjing"
2) "chongqing"
3) "beijing"
9、ltrim key begin end :保留开始与结束范围内的列表值

127.0.0.1:6379> ltrim city 1 2
OK
127.0.0.1:6379> lrange city 0 10
1) "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 10
1) "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) 4
127.0.0.1:6379> lrange city  0 10
1) "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 city
1) "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 city
1) "shanghai"
2) "tianjing"
127.0.0.1:6379> smembers city2
1) "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) 3
127.0.0.1:6379> sadd num2 2 3 4
(integer) 3
127.0.0.1:6379> sinter num1 num2
1) "2"
2) "3"
9、sdiff key1 key2 ... :返回指定集合的差集
127.0.0.1:6379> sdiff num1 num2
1) "1"
127.0.0.1:6379> sdiff num2 num1
1) "4"
10、sunion key1 key2 ... :返回指定集合的并集

127.0.0.1:6379> sunion num1 num2
1) "1"
2) "2"
3) "3"
4) "4"
11、sunionstore other_set set1 set2 ... :将指定集合的并集存储在其他的集合中

127.0.0.1:6379> sunionstore num3 num1 num2
(integer) 4
127.0.0.1:6379> smembers num3
1) "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 10
1) "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) 4
127.0.0.1:6379> zinterstore city3 2 city city2
(integer) 2
127.0.0.1:6379> zrange city3 0 10
1) "tianjing"
2) "beijing"
7、zrangebyscore key start stop :返回指定分数区间的成员

127.0.0.1:6379> zrangebyscore city 0.5 6.5
1) "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) 1
127.0.0.1:6379> zrange city2 0 10
1) "wuhan"
2) "beijing"
3) "tianjing"

12、zrevrangebyscore key max min :通过分数从高到低排序返回集合中的成员

127.0.0.1:6379> zrevrangebyscore city2 10 0
1) "tianjing"
2) "beijing"
3) "wuhan"

关于五种数据类型还可以参考: Redis常见的5种不同的数据类型详解

你可能感兴趣的:(Redis)