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

redis key+五大数据类型

  • Redis的原子性
  • key
  • 五大数据类型之String
  • 五大数据类型之List
  • 五大数据类型之Set
  • 五大数据类型之Hash
  • 五大数据类型之zset(sorted set)

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 >
删除某个键
redis key+五大数据类+原子性_第1张图片
k1的有效时间已经没了,所以被删除了,k2是被手动删除的

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

flushdb
清空当前库

flushall
通杀所有库

五大数据类型之String

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

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

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

incrby/decrby < key > <步长>
将key中存储的数字值增减,自定义步长
redis key+五大数据类+原子性_第4张图片
mset k4 v4 k5 v5
同时设置一个或者多个k-v对

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

msetnx k7 v666 k6 v6
同时设置一个或者多个k-v对 。并且仅当所有给定的key都不存在
redis key+五大数据类+原子性_第5张图片
getrange < key > <起始位置> <结束位置>
获得值的范围,类似java的substring

setrange < key > <起始位置> < value >
用value覆写key所存储的字符串值,从起始位置开始
redis key+五大数据类+原子性_第6张图片
setex k1 200 v999
设置键值的同时,设置过期时间,单位秒

getset k1 vnew1
以新换旧,设置了新值的同时获得了旧值
redis key+五大数据类+原子性_第7张图片

五大数据类型之List

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

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

lpop/rpop
从左边/右边吐出一个值
值在键在
lpop k2
redis key+五大数据类+原子性_第8张图片
rpoplpush key1 key2

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

五大数据类型之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
redis key+五大数据类+原子性_第13张图片
scard < key>
返回集合的元素个数
scard k1
在这里插入图片描述
srem < key> < value1> < value2>
删除集合中的元素
srem k1 v1

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

srandmember < key> n
随机从集合中取出n个值,不会从集合中删除
srandmember k1 1
redis key+五大数据类+原子性_第14张图片
sinter < key1> < key2>
返回两个集合的交集元素
sinter k1 k2

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

sdiff < key1> < key2>
返回两个集合的差集元素
sdiff k1 k2
redis key+五大数据类+原子性_第15张图片

五大数据类型之Hash

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

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
redis key+五大数据类+原子性_第16张图片

hincrby < key > < field1 > < increment >
为hash表key中的域field的值加上增量increment
hincrby k1 f1 fd12
redis key+五大数据类+原子性_第17张图片
hsetnx < key > < field > < value >
将哈希表key中的域field的值设置为value,当且仅当field不存在
hsetnx k1 f1 456
redis key+五大数据类+原子性_第18张图片

五大数据类型之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
redis key+五大数据类+原子性_第19张图片
zrevrangebyscore key max min [withscores] [limit offset count]
同上,排序书序改为从大到小
在这里插入图片描述
zincrby key increment value
为元素的score加上增量
根据value来给score加值
redis key+五大数据类+原子性_第20张图片
zrem key value
删除该集合下,指定值的元素

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

zrank key value
返回该值在集合中的排名,从0开始
redis key+五大数据类+原子性_第21张图片

你可能感兴趣的:(Linux,redis)