失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Redis学习笔记(四)—— redis的常用命令和五大数据类型的简单使用

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

时间:2021-06-02 03:21:18

相关推荐

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

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

▶ 字符串(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的常用命令和五大数据类型的简单使用》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。