redis的常用五大数据类型

Key-Value

KV键值对
若设置重复的key,那么对应的value将被覆盖

常用命令

keys * 返回当前数据库的所以有key的集合
exists key 判断key是否存在
move key db 移动key到其他数据库
expire key 秒 为key设置过期时间
ttl key 查看key还有都少秒过期 -1永不过期 -2过期 返回的数字为多少秒过期
type key 查看key是什么类型

String(字符串)

String(字符串)

string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象

string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M

常用命令

set /get 设置key,获取value
del key 删除key
append key value 在key的value的末端添加value
strlen 返回value的length长度

数字操作:
incr key 数字n+1,返回操作后的数字
decr key 数字n-1,返回操作后的数字

incrby key 数字n 按照后面的数字+n,返回操作后的数字
decrby key 数字n 按照后面的数字-n,返回操作后的数字

文字操作:
getrange key 0 -1 获取全部的字符串
getrange key 0 integet 获取指定位置的字符串
setrange key n String 在key中的value的n位置加入String值

setex key 秒 value 设置key的过期时间
setnx key value 判断是否存在key,存在取消操作返回0,不存在就可以设置值返回1

mset key1 value1 key2 value2 设置多个值
mget key1 key2 获取多个值
msetnx key1 value2 key2 value2 设置多个值,并判断是否存在 部分存在,那么全部表达式失效

Hash(哈希,类似java中的Map)

Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
类似Java里面的Map<String,Object>,是java实体类的映射
KV模式不变,但是value是一个键值对

常用命令

hset entrynaem key value 设置hash对象(单个属性)
hget entryname key 返回属性的值
hmest entryname key1 value1 key2 value2 设置hash对象(多个属性)
hmget entryname key1 value2 获取多个属性值
hgetall entryname 获取全部属性值 key-value
hdel entryname key 删除entry中的key
hlen entryname 返回key的长度
hexists entryname key 判断entryname中的key是否存在, 存在返回1 不存在返回0
hkeys entryname 获取entryname中key的所有元素
hvals entryname 获取entryname中value的所有元素
hincrby entryname key value 整数 entryname中key的value按照整数自增
hincrbyfloat enrtyname key value 小数 entryname中key的value按照小数自增
hestnx entryname key value 判断entryname中的key是否存在,存在了取消操作,不存在添加key和value 不能覆盖

List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
它的底层实际是个链表
允许重复元素

常用命令

lpush key 1 2 3 4 5 取出来是反顺序先进后出
rpush key 1 2 3 4 5 取出来是正顺序先进先出
lrange key 0 -1 取出name的所有值 也可以指定范围
lpop key取出栈顶元素
rpop key 取出栈底元素
lindex key n 获得list的n的值,没有返回nil
llen key 获得name的长度
lrem key n value 删除name的n个的value
ltrim key 开始index 结束index 截取指定范围的值再赋值给key
rpoplpush key1 key2 将key1的栈底元素移到key2的栈顶中
lset key index value 将key中的index替换为value
linsert key before/after value1 value2 在key中的value1之前/之后 添加value2

性能总结

它是一个字符串链表,left、right都可以插入添加;
如果键不存在,创建新的链表;
如果键已存在,新增内容;
如果值全移除,对应的键也就消失了。
链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了

Set(集合)

Redis的Set是string类型的无序集合。它是通过HashTable实现实现的
无序无重复

常用命令

sadd key 值1 值2 值3 自动去重复的value
smembers key 显示key的value
sismembers key value 判断key中的value是否存在 存在返回1 不存在返回0
scard key 获取集合的元素个数
srem key value 删除集合元素
srandmember key n(随机数的个数) 随机集合中的n个数字
spop key 占内元素随机出栈
smove key1 key2 value1 将key1的值加入给key2
数学集合类(自动去重):
sdiff key1 key2 差集 key1为参照集合,补充key2中没有key1的元素
sinter key1 key2 交集 两个集合中共有的元素
sunion key1 key2 全集 两个集合中全部的元素

zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

常用命令

zadd key score1 value1 score2 value2 添加集合
zrange key 0 -1 取出全部值 可自定义下标
zrange key 0 -1 withscores 取出全部值 把score也拿出来 可自定义下标
zrangebyscore key 开始score 结束score 按照score的范围取出value
zrangebyscore key (开始score 结束score 按照score的范围取出value ,( 不包含此值
zrangebyscore key 开始score 结束score limit startindex n 按照score的范围取出value 限定结果在第二个结果截取2个结果返回
zrem key 某score对应的value 删除key中value对应的Key-Value对
zcard key 获取key-value的个数
zcount key 开始score 结束score 统计指定范围的数量
zrank key value 获取下标
zscore key value 获取value对应的score
zrevrank key value 获得逆序下标
zrevrange key 0 -1 逆序并回显 可自定义下标
zrevrangebyscore key 开始score 结束score 按照指定范围取出value 逆序

应用场景

游戏排行榜

如何操作这些数据类型

redis命令参考手册

参考资料:尚硅谷周阳redis讲解

本文章将持续更新,欢迎互相学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值