Redis-02-基本数据类型

基本数据类型(五种)

(List,Set,Hash,Zset,String)

​ Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。

Redis key

在redis中无论什么数据类型,在数据库中都是以key-value形式保存,通过进行对Redis-key的操作,来完成对数据库中数据的操作。

基本命令:
set name yujiangyue   #set key
keys *  		# 查看当前数据库所有key
exists key:	#判断键是否存在 (EXISTS name)
del key:		#删除键值对
move key db:	#将键值对移动到指定数据库
expire key second:#设置键值对的过期时间(单位:秒)
ttl name       	#查看过期剩余秒数
type key:		#查看value的数据类型

String类型

APPEND key value #向指定的key的value后追加字符串
DECR/INCR key	#将指定key的value数值进行+1/-1(仅对于数字)
INCRBY/DECRBY key n	 # 按指定的步长对数值进行加减
STRLEN key	 #获取key保存值的字符串长度
GETSET key value	#将给定 key 的值设为 value ,并返回 key 的旧值(old value)。

List类型

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

LPUSH/RPUSH key value1[value2..]	#从左边/右边向列表中PUSH值(一个或者多个)。
LRANGE key start end	# 获取list 起止元素
LPUSHX/RPUSHX key value	# 向已存在的列名中push值(一个或者多个)
LINSERT key BEFORE|AFTER pivot value	#在指定列表元素的前/后 插入value
LLEN key	#查看列表长度
LINDEX key index	# 通过索引获取列表元素
LSET key index value	#通过索引为元素设值
LPOP/RPOP key	#从最左边/最右边移除值 并返回


小结:
  1. list实际上是一个链表,中间,左边,右边都可以插入值
  2. 如果key不存在,则创建新的链表
  3. 如果key存在,新增内容
  4. 如果移除了所有值,空链表,也代表不存在
  5. 在两边插入或者改动值,效率最高!修改中间元素,效率相对较低。
应用:

消息排队!消息队列(Lpush Rpop),栈(Lpush Lpop)


Set(集合)类型

Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据

Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)

SADD key member1[member2..]	#向集合中无序增加一个/多个成员
SCARD key	#获取集合的成员数
SMEMBERS key	#返回集合中所有的成员
SISMEMBER key member	#查询member元素是否是集合的成员,结果是无序的
SRANDMEMBER key [count]	#随机返回集合中count个成员,count缺省值为1
SPOP key [count]	#随机移除并返回集合中count个成员,count缺省值为1
SMOVE source destination member	#将source集合的成员member移动到destination集合
SREM key member1[member2..]	#移除集合中一个/多个成员
SDIFF key1[key2..]	#返回所有集合的差集 key1- key2 - …
SINTER key1 [key2..]	#返回所有集合的交集
SINTERSTORE destination key1[key2..]	#在SINTER的基础上,存储结果到集合中。覆盖
SUNION key1 [key2..]	#返回所有集合的并集
SUNIONSTORE destination key1 [key2..]	#在SUNION的基础上,存储结果到及和张。覆盖
SSCAN KEY [MATCH pattern] [COUNT count]	#在大量数据环境下,使用此命令遍历集合中元素,每次遍历部分

Hash(哈希)

Redis 中hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

HSET key field value	#将哈希表 key 中的字段 field 的值设为 value 。重复设置同一个field会覆盖,返回0
HMSET key field1 value1 [field2 value2..]	#同时将多个 field-value (域-值)对设置到哈希表 key 中。
HSETNX key field value	#只有在字段 field 不存在时,设置哈希表字段的值。
HEXISTS key field	#查看哈希表 key 中,指定的字段是否存在。
HGET key field value	#获取存储在哈希表中指定字段的值
HMGET key field1 [field2..]	#获取所有给定字段的值
HGETALL key	#获取在哈希表key 的所有字段和值
HLEN key	#获取哈希表中字段的数量
HVALS key	#获取哈希表中所有值
HDEL key field1 [field2..]	#删除哈希表key中一个/多个field字段
HINCRBY key field n	#为哈希表 key 中的指定字段的整数值加上增量n,并返回增量后结果 一样只适用于整数型字段

Hash更适合于对象的存储,Sring更加适合字符串存储!


Zset(有序集合)类型

不同的是每个元素都会关联一个double类型的分数(score)。redis正是通过分数来为集合中的成员进行从小到大的排序。
score相同:按字典顺序排序
有序集合的成员是唯一的,但分数(score)却可以重复。

127.0.0.1:6379> zadd myset 1 one     #添加一个值
(integer) 1
127.0.0.1:6379> zadd myset 2 two 3 three		#添加多个值
(integer) 2
127.0.0.1:6379> 
127.0.0.1:6379> ZRANGE myset 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379>
###############################################
127.0.0.1:6379> zadd salary 100 xiaohong 
(integer) 1
127.0.0.1:6379> zadd salary 200 zhangsan 
(integer) 1
127.0.0.1:6379> zadd salary 300 xiaoyu
(integer) 1
127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf
1) "xiaohong"
2) "zhangsan"
3) "xiaoyu"

ZADD key score member1 [score2 member2]	#向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZCARD key	#获取有序集合的成员数
ZCOUNT key min max	#计算在有序集合中指定区间score的成员数
ZINCRBY key n member	#有序集合中对指定成员的分数加上增量 n
ZSCORE key member	#返回有序集中,成员的分数值
ZRANK key member	#返回有序集合中指定成员的索引
ZREVRANGE key start end	#返回有序集中指定区间内的成员,通过索引,分数从高到底
ZREMRANGEBYSCORE key min max	#移除有序集合中给定的分数区间的所有成员

应用案例:
  1. set排序
  2. 排行榜应用实现(成绩排序,工资表排序)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YJY@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值