Fork me on GitHub

Redis学习笔记(数据类型及常用命令)

目录

  • 背景

  • 第一部分 Redis的数据类型

  • 参考文献及资料

背景

Redis作为内存数据库,具有高效的读取性能。首次安装完Redis和Python连接redis的包。尝试做一些hello world的练习。

第一部分 Redis的数据类型

  • Redis是一个键值数据库(Key-Value)
  • 其中Value值支持5中数据类型。分别是string(字符串)、list(列表)、set(集合)、hash(散列)、zset(有序集合)

redis-cli控制台的使用及各种数据类型的操作

  • 进入控制台
1
2
>>>redis-cli
127.0.0.1:6379>

表示进入控制台,可以和redis进行互动。首先尝试字符串类型的三个命令(set、get、del)。

1、string类型的3个常用命令

set命令

1
2
127.0.0.1:6379> set hello world
OK

set命令用于给redis中指定键赋值。这里key为hello,而键值value为world。如果key不存在会自动新建该键。

get命令

1
2
127.0.0.1:6379> get hello
"world"

get命令用于从redis中获取指定键的值。例子获取了hello键的值,返回键值字符串“world”。

del命令

1
2
3
4
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get hello
(nil)

del命令用于从redis中删除指定键的键值。且我们用get命令检验,确实被删除了。

2、list类型的4个命令

rpush、lpush命令

1
2
3
4
5
6
7
8
127.0.0.1:6379> rpush list-test item1
(integer) 1
127.0.0.1:6379> rpush list-test item2
(integer) 2
127.0.0.1:6379> rpush list-test item1
(integer) 3
127.0.0.1:6379> lpush list-test item3
(integer) 4

上面的命令我们从右边先后推入了item1,item2,item1;然后从左边推入了item3。所以最后的形式应该是[“item3”,”item1”,”item2”,”item1”]

lrange命令

1
2
3
4
5
127.0.0.1:6379> lrange list-test 0 -1
1) "item3"
2) "item1"
3) "item2"
4) "item1"

lrange用于获取list中指定范围的值。这里0是起始索引,-1是最后一个索引(类似python中的list索引)。

lindex 命令

1
2
127.0.0.1:6379> lindex list-test 2
"item2"

lindex命令从list中获得指定索引位置的值。这里2实际是第三个值,所以返回“item2”。

lpop、rpop命令

1
2
3
4
5
6
127.0.0.1:6379> lpop list-test
"item3"
127.0.0.1:6379> lrange list-test 0 -1
1) "item1"
2) "item2"
3) "item1"

lpop命令将list-test中最左边的值删除(弹掉),我们用lrange命令查看,确实已经删除。rpop类似使用。

3、set集合类型的四个命令

sadd命令

1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> sadd set-test item
(integer) 1
127.0.0.1:6379> sadd set-test item1
(integer) 1
127.0.0.1:6379> sadd set-test item2
(integer) 1
127.0.0.1:6379> sadd set-test item3
(integer) 1
127.0.0.1:6379> sadd set-test item4
(integer) 1

使用sadd命令向集合set-test加入了5个字符串值。注意set类型类似python中的set类型。无序值不重复。

sismember命令

1
2
127.0.0.1:6379> sismember set-test item3
(integer) 1

sismember用来查看值是否在集合中。上面检查item3是否在set-test,返回1,表示在集合中。

srem命令

1
2
3
4
127.0.0.1:6379> srem set-test item2
(integer) 1
127.0.0.1:6379> srem set-test item6
(integer) 0

srem命令查看值是否在集合中,如果在返回1且删除该值。否则返回0。

smembers命令

1
2
3
4
5
127.0.0.1:6379> smembers set-test
1) "item"
2) "item4"
3) "item1"
4) "item3"

smembers命令查看集合中所有值。上面的结果也验证了srem确实将item2删除了。

set类型还有集合之间的运算(数学),例如sinter、sunion、sdiff分别是集合的交集、并集、差集运算。

4、hash散列类型的命令

散列的数据类型是存储多个键值对之间的映射。

hset命令

1
2
3
4
5
6
7
8
127.0.0.1:6379> hset hash-test sub-key1 value1
(integer) 1
127.0.0.1:6379> hset hash-test sub-key2 value2
(integer) 1
127.0.0.1:6379> hset hash-test sub-key3 value3
(integer) 1
127.0.0.1:6379> hset hash-test sub-key2 value2
(integer) 0

hset 向hash-test中插入键及键值。返回1表示原hash中无该值,0表示重复插入。

hgetall命令

1
2
3
4
5
6
7
127.0.0.1:6379> hgetall hash-test
1) "sub-key1"
2) "value1"
3) "sub-key2"
4) "value2"
5) "sub-key3"
6) "value3"

hgetall命令从hash-test中获取所有的键值。

hget命令

1
2
127.0.0.1:6379> hget hash-test sub-key2
"value2"

hget命令从hash-test中获得指定键的键值。

hdel命令

1
2
3
4
5
6
7
127.0.0.1:6379> hdel hash-test sub-key2
(integer) 1
127.0.0.1:6379> hgetall hash-test
1) "sub-key1"
2) "value1"
3) "sub-key3"
4) "value3"

hdel命令删除指定键及键值。

5、有序集合的命令

zadd命令

1
2
3
4
5
6
127.0.0.1:6379> zadd zset-test 123 number1
(integer) 1
127.0.0.1:6379> zadd zset-test 456 number2
(integer) 1
127.0.0.1:6379> zadd zset-test 123 number1
(integer) 0

zadd命令zset-test中插入分值(score)及成员名(member)。

zrange命令

1
2
3
4
5
6
7
8
127.0.0.1:6379> zrange zset-test 0 -1 withscores
1) "number1"
2) "123"
3) "number2"
4) "456"
127.0.0.1:6379> zrange zset-test 0 -1
1) "number1"
2) "number2"

zrange命令获取指定范围的分值和成员名。其中withscores参数用来控制是否同时获得score值。

zrangebyscores命令

1
2
3
127.0.0.1:6379> zrangebyscore zset-test 0 200 withscores
1) "number1"
2) "123"

zrangebyscores命令获取scores指定范围的分值和成员名。

zrem命令

1
2
3
4
5
127.0.0.1:6379> zrem zset-test number1
(integer) 1
127.0.0.1:6379> zrange zset-test 0 -1 withscores
1) "number2"
2) "456"

zrem命令检查zset-test中知否有该分值和成员名。如果有返回1,并且删除。

参考文献及资料

1、redisbook,链接:https://github.com/huangz1990/redisbook

本文标题:Redis学习笔记(数据类型及常用命令)

文章作者:rong xiang

发布时间:2018年01月25日 - 19:01

最后更新:2022年10月25日 - 23:10

原始链接:https://zjrongxiang.github.io/posts/8e07eec6/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%