【Redis学习】数据类型

Redis是通过key-value来存储信息的,其中value支持5中数据类型:
字符串(strings)
列表(lists)
集合(sets)
有序集合(sorted sets)
哈希(hashes)

字符串

字符串类型是一个很基础的数据类型,使用起来也非常简单
常用操作:
SET:设置指定的key值
GET:获取指定的key值

127.0.0.1:6379> set name "root" 		//设置字符串类型
OK
127.0.0.1:6379> get name				//读取字符串类型
"root"

我们还可以对字符串类型进行数值运算

127.0.0.1:6379> set num "5"
OK
127.0.0.1:6379> incr num		
(integer) 6

其中,INCR的作用是将key中存储的数值加一,类似的还有
DECR:将key中存储的数值减一
INCRBY:将key中存储的数值加上指定的数量值
DECRBY:将key中存储的数值减去指定的数量值

列表

常用操作:
LPUSH:在列表左侧插入一个或多个数值
RPUSH:在列表右侧插入一个或多个数值
LRANGE:获取指定范围内的元素

127.0.0.1:6379> lpush list_test "a"		//新建列表list_test并在头部插入a
(integer) 1								//返回列表内元素个数
127.0.0.1:6379> rpush list_test "b"		//在右侧插入b
(integer) 2
127.0.0.1:6379> lpush list_test "c"		//在左侧插入c
(integer) 3
127.0.0.1:6379> lrange list_test 1 2	//返回编号1到2的数值
1) "a"
2) "b"
127.0.0.1:6379> lrange list_test 0 -1	//返回列表中的所有元素
1) "c"
2) "a"
3) "b"

redis中的lists在底层实现上并不是数组,而是链表,也就是说对于一个具有上百万个元素的lists来说,在头部和尾部插入一个新元素,其时间复杂度是常数级别的,比如用LPUSH在10个元素的lists头部插入新元素,和在上千万元素的lists头部插入新元素的速度应该是相同的。

虽然lists有这样的优势,但同样有其弊端,那就是,链表型lists的元素定位会比较慢,而数组型lists的元素定位就会快得多。

集合

集合类型中的元素没有先后顺序
常用操作:
SADD:为集合添加一个或多个元素
SREM:删除集合中的一个或多个元素
SISMEMBER:判断元素是否在集合内,是的话返回1,不是返回0
SMEMBERS:返回集合中所有成员
SUNION:返回给定集合的并集
SINTER:返回给定集合的交集

127.0.0.1:6379> sadd test1 "a" "b" "c"				//新建集合test1并添加元素
(integer) 3
127.0.0.1:6379> sadd test2 "e" "f" "g" "a" "b"		//新建集合test2并添加元素
(integer) 5
127.0.0.1:6379> sismember test1 "c"					//判断"c"是不是test1中的元素
(integer) 1											//是,返回1
127.0.0.1:6379> sismember test1 "e"					//判断"e"是不是test1中的元素
(integer) 0											//不是,返回0
127.0.0.1:6379> smembers test2						//显示test2中的所有元素
1) "g"
2) "e"
3) "a"
4) "f"
5) "b"
127.0.0.1:6379> srem test2 "f" 						//删除test2中的"f"
(integer) 1
127.0.0.1:6379> smembers test2
1) "a"
2) "e"
3) "g"
4) "b"
127.0.0.1:6379> sinter test1 test2					//求test1和test2的交集
1) "b"
2) "a"
127.0.0.1:6379> sunion test1 test2					//求test1和test2的并集
1) "c"
2) "b"
3) "e"
4) "g"
5) "a"
有序集合

redis不但提供了无需集合,还提供了有序集合。有序集合中的每个元素都关联一个序号
常用操作:
ZADD:为有序集合添加一个或多个元素
ZRANGE:返回有序集合中指定范围中的元素

127.0.0.1:6379> zadd test 1 "a" 2 "b" 3 "c" 4 "d"		//新建有序集合test并添加元素
(integer) 4
127.0.0.1:6379> zrange test 0 -1						//返回有序集合中的所有元素
1) "a"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379> zrange test 0 -1 withscores				//加上withscores后返回元素和其对应的序号
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "3"
7) "d"
8) "4"
哈希

哈希是redis-2.0.0版本之后新加入的数据结构
哈希存放的是字符串和字符串值之间的映射
常用操作:
HMSET:为哈希中添加一个或多个字段和值(字段和值一一对应)
HGETALL:列出哈希中所有的内容
HAVALS:只列出哈希中的所有值
HSET:更改哈希中某一项的值

127.0.0.1:6379> hmset hashes_test name xiaoming age 20 sex male		//建立哈希,并赋值
OK
127.0.0.1:6379> hgetall hashes_test									//列出hashes_test中的所有内容
1) "name"
2) "xiaoming"
3) "age"
4) "20"
5) "sex"
6) "male"
127.0.0.1:6379> hvals hashes_test									//只列出hashes_test中的值
1) "xiaoming"
2) "20"
3) "male"
127.0.0.1:6379> hset hashes_test age 21								//将年龄改为21
(integer) 0
127.0.0.1:6379> hgetall hashes_test									//再次列出哈希中的内容
1) "name"
2) "xiaoming"
3) "age"
4) "21"
5) "sex"
6) "male"

redis中对数据的操作内容相当丰富,文章中只列举了少量常用的操作,有兴趣的话可以查阅相关的资料。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值