Redis——五大数据类型详解

官网对于redis的介绍

官网对于redis的介绍

----Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间 件MQ。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合 (sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间 (geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU 驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

五大基本类型的操作及使用场合

Redis-Key

查看所有的key

keys *

查看key是否存在

EXISTS key

移除key

move key num

设置key的过期时间

EXPIRE key second

查看key的过期时间

ttl key

查看当前key的类型

type key

String字符串类型

设置key的值

set key value

获取key的值

get key

追加key的值
如果key不存在 就相当于 set key

APPEND key value

查看key的值的长度

STRLEN key

自增自减的功能

#自增
incr key
#自减
decr key

自增多少个 num:自增个数

incrby key num

自减多少个

decrby key num

字符串范围 range

GETRANGE key start end
#示例 截取0-3个字符串
GETRANGE key 0 3
获取全部字符串
GETRANGE key 0 -1
替换字符串
SETRANGE key offset value

设置字符串过期

setex key seconds value #(设置过期时间)
setnx key value #不存在设置(分布式锁中常常用到)
#setnx key  如果这个key存在 创建失败
#setnx key  如果不存在 创建成功

一次性设置多个值
key 存在就不创建

 mset key value [key value ...]

设置多个值 要么同时成功,要么同时失败 原子性操作

msetnx key value [key value ...]
设置对象
设置user:1对象 值为json字符串来保存一个对象

先get后set命令

getset key value

如果不存在,返回nill 设置值
如果存在值,返回值,更新值

String类似的使用场景:value除了是我们的字符串还可以是我们的数字!
例如:
  计数器
  统计多单位的数量
  粉丝数
  对象缓存存储

List(列表)

所有的list命令都是用l开头的,Redis不区分大小命令
LPUSH 将一个值或者多个值,插入到列表头部 (左)

LPUSH key value

RPUSH 将一个值或者多个值,插入到列表位部 (右)

RPUSH key value
lpop &rpop 移除list的值
lpop key  #从最左边移除一个元素
rpop key  #从最右边移除一个元素
lindex 通过下标获取list的值
lindex key index  #通过下标获取list的值
llen 获取list的长度
llen key
LREM 移除list指定的值
LREM key count element
count:移除几个
rpoplpush 移动列表元素
EXISTS 判断列表存不存在
EXISTS key
lset指定列表的下标设置值(更新值)
如果值不存在就报错
lset key index element
往list指定的元素前面或后面插入值
LINSERT key BEFORE|AFTER pivot element

List的使用场景

  他实际上是一个链表,before Node after , left,
right 都可以插入值 如果key 不存在,创建新的链表
如果key存在,新增内容

Set(集合)

set中的值是不能重读的!

添加set集合的值

sadd key member [member ...]

获取set集合的值

SMEMBERS key

获取set集合元素个数

SCARD key

移除set的元素

SREM key member [member ...]

随机获取set的元素

SRANDMEMBER key [count]

count:指定获取几个元素
随机移除一个元素

spop key

将指定的set集合的元素移到另一个set集合中

smove source destination member

查看两个set集合中的不同的元素

SDIFF key [key ...]
key在前查看谁

查看两个set集合中的交集(共同好友)

SINTER key [key ...]

查看两个set集合中的并集

SUNION key [key ...]

Set的使用场景

  微博,A用户将所有关注的人放在一个set集合中!将它的粉丝也放在一个集合中!
  共同关注,共同爱好,二度好友,推荐好友!(六度分割理论)

Hash(哈希)

Map集合,key-map! 时候这个值是一个map集合! 本质和String类型没有太大区别,还是一个简单的 key-vlaue!

添加值

hset key field value [field value ...]
hmset key field value [field value ...]

获取值

hget key field
hmget key field [field ...]

删除值

hdel key field [field ...]

获取hash的字段长度

hlen key

判断hash指定的字段是否存在

HEXISTS key field

只获得所有field

hkeys key

只获得所有value

hvals key

自增自减

HINCRBY key field increment 

自增

HINCRBY myhash user 1 

#自减

HINCRBY myhash user -1

设置值如果不存在则可以设置 如果存在则不能设置

 hsetnx key field value

Hash的使用场景:
  hash变更的数据 user name age,尤其是是用户信息之类的,经常变动的信息! hash 更适合于对象的 存储,String更加适合字符串存储!

Zset(有序集合)

在set的基础上,增加了一个值,set k1 v1 zset k1 score1 v1

添加值

zadd key [NX|XX] [CH] [INCR] score member [score member ...]

从小到大排序

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

总大到小排序

zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
ZREVRANGE key start stop [WITHSCORES]

移除zset的指定元素

zrem key member [member ...]

获取有序集合中的个数

zcard key

获取指定区间的成员数量

zcount key min max

Zset的使用场景
  案例思路:set 排序 存储班级成绩表,工资表排序!
  普通消息,1, 重要消息 2,带权重进行判断! 排行榜应用实现,取Top N 测试!

猜你喜欢

转载自blog.csdn.net/m0_52000372/article/details/120242972