20210630——Redis基本数据类型(三)

在这里插入图片描述
全段翻译:
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(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

keys * 查看所有的key

set name mmz 设置key

EXISTS name 判断当前的key是否存在

move name 1 移除当前的key

EXPIRE name 10 设置当前的过期时间,单位是秒

ttl name 查看当前key的剩余时间

type name 查看key是什么类型

String

字符串
在这里插入图片描述

APPEND key value
追加字符串,如果当前key不存在,就相当于set key

在这里插入图片描述

STRLEN key
获取字符串长度

步长i++

incr key 
自增+1

decr key
自减-1

INCRBY key number
可以修改自增步长

DECRBY key number
可以修改自减步长

截取字符串

GETRANGE key 0 3
-1 是查看全部的字符串

在这里插入图片描述

替换字符串

SETRANGE key index value
setex (set with expire)  设置过期时间

setnx (set if no exist) 不存在设置

分布式锁常用
mset  k1 v1 k2 v2 批量设置

mget k1 k2 批量获取
 

String类似的使用场景,valu可以是字符串也可以是数字
1)计数器
2)统计多单位的数量
3)粉丝数

List

基本的数据类型,列表
所有的list命令都是l开头
在这里插入图片描述

127.0.0.1:6379> LPUSH list one 将一个值或者多个值,插入到列表的头部(左边),想要添加尾部(RPUSH)
(integer) 1
127.0.0.1:6379> LPUSH list two
(integer) 2
127.0.0.1:6379> LPUSH list three
(integer) 3
127.0.0.1:6379> LRANGE list 0 -1 
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> LRANGE list 0 1 通过区间获取具体的值
1) "three"
2) "two"

移除

在这里插入图片描述

RPOP
LPOP

获取
在这里插入图片描述

lindex list 0 
获取指定下标的值

获取列表长度
在这里插入图片描述

llen list

移除指定的值
在这里插入图片描述

lrem llist 1 one
移除list列表中,value为one的一个值

剪裁

ltrim list  1 2 
通过下标,截取这个list的指定长度,只剩下截取的元素了

移动

rpoplpush list1 list2
把list1最右边的放到list2最左边的

更新元素

lset list 0 newvalue
把lsit中的第0个元素,换成新的newvalue
必须当前列表下标当前存在

插入元素

linsert list before/after word value
向具体的值前面或者后面插入值

实际上,就是一个双向链表,
如果key不存在,创建新的链表
如果key存在,新增内容
如果移除key,空链表没有节点,代表不存在

Set

在这里插入图片描述

只是set中的值不能重复的,跟java中的set一样

127.0.0.1:6379> SADD myset hello 存值
(integer) 1
127.0.0.1:6379> SADD myset mmz
(integer) 1
127.0.0.1:6379> keys *
1) "myset"
127.0.0.1:6379> get myset
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> SMEMBERS myset 得到值
1) "mmz"
2) "hello"
127.0.0.1:6379> SISMEMBER myset hello 判断是否存在
(integer) 1  1为存在
127.0.0.1:6379> SISMEMBER myset zzm
(integer) 0 0 为不存在
127.0.0.1:6379>

在这里插入图片描述
获取set里面的值的数量

移除set中的指定元素

srem myset xxx

set是无序不重复集合,可以随机抽奖

在这里插入图片描述

127.0.0.1:6379> SRANDMEMBER myset 随机抽选一个元素
"hello"
127.0.0.1:6379> SRANDMEMBER myset
"mmz"
127.0.0.1:6379> SRANDMEMBER myset
"zjz"
127.0.0.1:6379> SRANDMEMBER myset
"mmz"
127.0.0.1:6379> SRANDMEMBER myset
"hello"
127.0.0.1:6379> SRANDMEMBER myset
"mmz"

随机删除key
在这里插入图片描述

127.0.0.1:6379> SPOP myset 随机删除一些元素
"mmz"
127.0.0.1:6379> SMEMBERS myset
1) "zjz"
2) "hello"

讲一个指定的值,移动到另外一个key(set)中

smove set1 set2 成员xxx

并集,共同关注
数字集合类:差集,交集,并集

127.0.0.1:6379> sadd key1 a
(integer) 1
127.0.0.1:6379> sadd key1 b
(integer) 1
127.0.0.1:6379> sadd key1 c
(integer) 1
127.0.0.1:6379> sadd key2 b
(integer) 1
127.0.0.1:6379> sadd key2 c
(integer) 1
127.0.0.1:6379> sadd key2 e
(integer) 1
127.0.0.1:6379> SDIFF key1 key2 差集
1) "a"
127.0.0.1:6379> SINTER key1 key2 交集
1) "c"
2) "b"
127.0.0.1:6379> SUNION key1 key2 并集
1) "e"
2) "c"
3) "b"
4) "a"

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

Hash

map集合,key-value(现在value变成Map),key-<key,value>

127.0.0.1:6379> hset myhash name mmz 设置
(integer) 1
127.0.0.1:6379> hget 
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hget myhash
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hget myhash name 得到,必须加上field
"mmz"

当然hmset 也可以设置

127.0.0.1:6379> FLUSHALL
OK
127.0.0.1:6379> hmset myhash name1 mmz1 name2 zjz name3 duoduo
OK
127.0.0.1:6379>
127.0.0.1:6379> HGETALL
(error) ERR wrong number of arguments for 'hgetall' command
127.0.0.1:6379> HGETALL myhash  得到所有
1) "name1"
2) "mmz1"
3) "name2"
4) "zjz"
5) "name3"
6) "duoduo"

删除,hdel

127.0.0.1:6379> HDEL myhash name1 删除
(integer) 1
127.0.0.1:6379> HGETALL myhash
1) "name2"
2) "zjz"
3) "name3"
4) "duoduo"

判断是否存在 hexists myhash field1

只获得所有的key与value

127.0.0.1:6379> hkeys myhash
1) "name2"
2) "name3"
127.0.0.1:6379> hvals myhash
1) "zjz"
2) "duoduo"

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

Zset

有序集合,在set的基础上,增加了一个值

127.0.0.1:6379> zadd myset 1 one  增加一个值
(integer) 1
127.0.0.1:6379> zadd myset 2 two
(integer) 1
127.0.0.1:6379> zadd myset 3 three
(integer) 1
127.0.0.1:6379> ZRANGE myset 0 -1 遍历输出
1) "one"
2) "two"
3) "three"

排序遍历

127.0.0.1:6379> ZRANGE salary 0 -1
1) "mmz"
2) "xiaolong"
3) "zhansan"
127.0.0.1:6379> ZRANGEBYSCORE salary -inf inf
1) "mmz"
2) "xiaolong"
3) "zhansan"

移除元素

127.0.0.1:6379> ZREM salary xiaolong
(integer) 1
127.0.0.1:6379> zrange salary 0 -1
1) "mmz"
2) "zhansan"

存储班级成绩表,工资表排序
普通消息为1 重要消息为2 加权判断
排行榜

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值