redis key+五大数据类+原子性

本文详细介绍了Redis的原子性,强调了其单线程模型确保了命令执行的原子性。接着,文章逐一讲解了Redis的五大数据类型:String、List、Set、Hash和Sorted Set的基本操作,包括添加、查询、修改和删除等关键命令,展示了Redis在数据存储和管理方面的强大能力。

Redis的原子性

所谓原子操作是指不会被线程调度机制打断的操作。这种操作一旦开始,就会一直运行到结束,中间不会有任何的context switch(切换到另一个线程)
1.在单线程中,能够单条指令中完成的操作都可以认为是原子操作,因为中断只能发生于指令之间
2.在多线程中,不能被其他进程(线程)打断的操作叫做原子操作
redis单命令的原子性主要得益于redis的单线程

key

keys
查看当前库所有的key
在这里插入图片描述
exists aa
判断某个键是否存在,1为存在,0为不存在
在这里插入图片描述
flushdb
清空key
在这里插入图片描述
set k1 v1
添加键值对
ttl < key >
查看还有多少秒过期,-1表示永不过期,-2表示已过期
expire seconds
为key设置过期时间
type < key >
查看键的类型
del < key >
删除某个键
在这里插入图片描述
k1的有效时间已经没了,所以被删除了,k2是被手动删除的

dbsize
查看当前数据库中的key的数量

flushdb
清空当前库

flushall
通杀所有库

五大数据类型之String

String是Redis最基本的类型,可以理解成与Memcached的一模一样的类型,一个key对应一个value
String类型是二进制安全的,意味着Redis的STring可以包含任何数据,比如JPG图片或者序列化对象
String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M

get < key >
查询对应的键值
在这里插入图片描述
setnx < key > < value >
只有在key不存在时设置key的值
在这里插入图片描述
strlen < key >
获取值的长度
在这里插入图片描述
append < key > < value >
将value追加到原值的末尾
在这里插入图片描述
incr < key >
将key中存储的数字值增1
只能对数字值操作,如果为空,新增值为1

decr < key >
将key中存储的数字值减1
只能对数字值操作,如果为空,新增值为-1

incrby/decrby < key > <步长>
将key中存储的数字值增减,自定义步长
在这里插入图片描述
mset k4 v4 k5 v5
同时设置一个或者多个k-v对

mget k1 k2 k4 k5
同时获取一个或者多个value

msetnx k7 v666 k6 v6
同时设置一个或者多个k-v对 。并且仅当所有给定的key都不存在
在这里插入图片描述
getrange < key > <起始位置> <结束位置>
获得值的范围,类似java的substring

setrange < key > <起始位置> < value >
用value覆写key所存储的字符串值,从起始位置开始
在这里插入图片描述
setex k1 200 v999
设置键值的同时,设置过期时间,单位秒

getset k1 vnew1
以新换旧,设置了新值的同时获得了旧值
在这里插入图片描述

五大数据类型之List

单键多值
redis列表是最简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头或者尾
底层实际是个双向链表对两端的操作性能很高,通过索引下标的操作中间的节点 性能会较差

lpush/rpush
从左边/右边插入一个或者多个值
lpush k2 v4 v5
rpush k2 555

lpop/rpop
从左边/右边吐出一个值
值在键在
lpop k2
在这里插入图片描述
rpoplpush key1 key2

从key1列表右边吐出一个值,插入到key2列表的右边
在这里插入图片描述
lrange k2 0 10
查看key对应的值,从第0个到第10个
在这里插入图片描述
lindex key index
按照索引下标取得元素(从右到左)
在这里插入图片描述
llen k3
获得列表长度
在这里插入图片描述
linsert key before value newvalue
在value前面插入newvalue
linsert k3 before v3 v123
在这里插入图片描述
lrem key n value
从左边删除n个value
在这里插入图片描述

五大数据类型之Set

Redis set 对外提供的功能和list类似的一个列表功能,特殊之处是set可以自动去重,并且set提供了判断某一个成员是否在一个set集合内的重要接口
Redis 的set是String类型的无序集合,它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)

sadd < key> < value1> < value2>
将一个或多个member元素加入到集合key中,已经存于集合的member元素被忽略
sadd k1 v1 v2 v3

smembers < key>
取出该集合的所有值
smembers k1

sismember < key> < value>
判断集合key是否为含有该value值,有返回1,没有返回0
sismember k1 v3
在这里插入图片描述
scard < key>
返回集合的元素个数
scard k1
在这里插入图片描述
srem < key> < value1> < value2>
删除集合中的元素
srem k1 v1

spop < key>
随机从集合中吐出一个值
spop k1

srandmember < key> n
随机从集合中取出n个值,不会从集合中删除
srandmember k1 1
在这里插入图片描述
sinter < key1> < key2>
返回两个集合的交集元素
sinter k1 k2

sunion < key1> < key2>
返回两个集合的并集元素
sunion k1 k2

sdiff < key1> < key2>
返回两个集合的差集元素
sdiff k1 k2
在这里插入图片描述

五大数据类型之Hash

redis hash是一个键值对集合
Redis hash是一个String类型的field和value的映射表,hash特别适用于存储对象
类似于java里面的Map<String,Object>

hset < key > < field > < value >
给key集合中的field键赋值value
hset k1 f1 v1

hget < key > < field >
从key集合field取出value
hget k1 f1

hmset < key > < field1 > < value1 > < field1 > < value1 >
批量设置hash值
hmset k1 f1 v1 f2 v2 f3 v3

hexists key field
查看哈希表key值中,给定的field是否存在
hexists k1 f2

hkeys < key >
列出该hash集合的所有field
hkeys k1

hvals < key >
列出该hash集合的所有value
hvals k1
在这里插入图片描述

hincrby < key > < field1 > < increment >
为hash表key中的域field的值加上增量increment
hincrby k1 f1 fd12
在这里插入图片描述
hsetnx < key > < field > < value >
将哈希表key中的域field的值设置为value,当且仅当field不存在
hsetnx k1 f1 456
在这里插入图片描述

五大数据类型之zset(sorted set)

Redis 有序结合Zset与普通集合set非常相似,是一个没有重复数据的字符换集合,不同之处是有序集合的所有成员都关联一个评分。根据评分从低到高进行排序,集合成员必须唯一,但是评分可以重复
因为元素是有序的,所以可以根据评分或者次序获取一个范围的元素

zadd < key > < score1 > < value1 > < score2 > < value2 >
将一个或者多个member元素及其score值写入有序列表key中
zadd k1 1 v1 2 v2 3 v3

**zrange < key > start stop [withscores] **
返回有序集key中,下标在start-stop之间的元素
带WITHSCORE,可以让分数和值一起返回到结果集
zrange k1 0 2 winthscores

zrangebyscore key min max [withscores] [limit offset count]
返回有序集key中,下所有score值介于min和max之间(包括min和max)的成员
有序集成员按搜查人值递增排序
zrangebyscore k1 1 2 withscores
在这里插入图片描述
zrevrangebyscore key max min [withscores] [limit offset count]
同上,排序书序改为从大到小
在这里插入图片描述
zincrby key increment value
为元素的score加上增量
根据value来给score加值
在这里插入图片描述
zrem key value
删除该集合下,指定值的元素

zcount key min max
统计该集合,分数区间内的元素个数

zrank key value
返回该值在集合中的排名,从0开始
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值