integer类型判断是否为空_Redis基本指令&基本数据类型&操作

2af7c4b8b49b7fc5822fb549694a10ae.png

Redis基本指令

#查询当前库的所有键keys *#判断某个键是否存在exists key#查看键的类型type key#删除某个键del key#为键值设置过期时间单位秒expire key seconds#查看还有多少秒过期,-1表示永不过期 -2表示已过期ttl key#查看当前数据库key的数量dbsize#清空当前库Flushdb#通杀全部库Flushall#结果127.0.0.1:6379> keys *1) "a"127.0.0.1:6379> 127.0.0.1:6379> 127.0.0.1:6379> exists a(integer) 1127.0.0.1:6379> 127.0.0.1:6379> 127.0.0.1:6379> type astring127.0.0.1:6379> 127.0.0.1:6379> 127.0.0.1:6379> del a(integer) 1

Redis基本数据类型

String

  • String是Redis最基本的类型,一个key对应一个value
  • String类型是二进制安全的,意味着可以包含任何数据,比如jpg图片或者序列化的对象
  • 一个Redis中字符串value最多可以是512M
#添加键值对127.0.0.1:6379> set k1 v1OK#查询对应键值127.0.0.1:6379> get k1"v1"#讲给定的value添加到原值的末尾127.0.0.1:6379> append k1 234(integer) 5#获取值的长度127.0.0.1:6379> strlen k1(integer) 5#只有在key不存的时候 才会设置key的值127.0.0.1:6379> setnx k1 asd(integer) 0127.0.0.1:6379> setnx k2 v2(integer) 1​127.0.0.1:6379> set k3 12OK#将key对应的value值加1,只能对数字进行操作127.0.0.1:6379> incr k3(integer) 13#将key对应的value值减1,只能对数字进行操作127.0.0.1:6379> decr k3(integer) 12#将key对应的value值加步长,只能对数字进行操作127.0.0.1:6379> incrby k3 10(integer) 22#将key对应的value值减步长,只能对数字进行操作127.0.0.1:6379> decrby k3 5(integer) 17​#设置一个或多个key-value127.0.0.1:6379> mset k4 v4 k5 v5OK#获取一个或多个value127.0.0.1:6379> mget k1 k2 k31) "v1234"2) "v2"3) "17"#当且仅当所有key都不存在时设置key-value127.0.0.1:6379> msetnx k1 v1 k6 v6(integer) 0​#获取key对应值中范围值127.0.0.1:6379> getrange k1 0 2"v12"#设置key对应value的范围值127.0.0.1:6379> setrange k1 2 abc(integer) 5127.0.0.1:6379> get k1"v1abc"​#设置键值的同时,设置过期时间,单位秒setex key 过期时间 value#设置新值同时获取旧值getset key value

原子性

所谓原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束。中间不会有任何context switch(切换线程)

  • 在单线程中,能够发生在单条指令中完成的操作都可以认为是‘原子操作’。因为中断只能发生于指令之间
  • 在多线程中,不能被其他线程打断的操作就叫做原子操作

Redis单命令的原子性主要得益于Redis的单线程

List

  • 单键多值
  • Redis列表是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边)
  • 它的底层实现是个双向链表,对两端的操作性能很高,通过索引下标操作中间的节点性能会较差
#从左边/右边插入一个或多个值127.0.0.1:6379> lpush testList a b c d e(integer) 5127.0.0.1:6379> rpush testList 1 2 3 4 5(integer) 10#从左边/右边吐出一个值,值在键在,值光键亡127.0.0.1:6379> lpop testList"e"127.0.0.1:6379> rpop testList"5"127.0.0.1:6379> rpush testListTwo x y z(integer) 3#从key1列表右边吐出一个值差到key2列表的左边127.0.0.1:6379> rpoplpush testList testListTwo"4"​#按照索引下标获得元素(从左到右)127.0.0.1:6379> lrange testList 0 -11) "d"2) "c"3) "b"4) "a"5) "1"6) "2"7) "3"​127.0.0.1:6379> lrange testListTwo 0 -11) "4"2) "x"3) "y"4) "z"#按照索引下标获得元素(从左到右)127.0.0.1:6379> lindex testList -1"3"#获得列表长度127.0.0.1:6379> llen testList(integer) 7​#在value的前/后面插入新的value127.0.0.1:6379> linsert testList before 1 xyz(integer) 8127.0.0.1:6379> lrange testList 0 -11) "d"2) "c"3) "b"4) "a"5) "xyz"6) "1"7) "2"8) "3"​​127.0.0.1:6379> lpush testList 1 2 3(integer) 11127.0.0.1:6379> lrange testList 0 -1 1) "3" 2) "2" 3) "1" 4) "d" 5) "c" 6) "b" 7) "a" 8) "xyz" 9) "1"10) "2"11) "3"#从左边删除n个value(从左到右)127.0.0.1:6379> lrem testList 1 3(integer) 1​127.0.0.1:6379> lrange testList 0 -1 1) "2" 2) "1" 3) "d" 4) "c" 5) "b" 6) "a" 7) "xyz" 8) "1" 9) "2"10) "3"#负数表示从又开始127.0.0.1:6379> lrem testList -1 2(integer) 1127.0.0.1:6379> lrange testList 0 -11) "2"2) "1"3) "d"4) "c"5) "b"6) "a"7) "xyz"8) "1"9) "3"#0表示删除所有127.0.0.1:6379> lrem testList 0 1(integer) 2127.0.0.1:6379> lrange testList 0 -11) "2"2) "d"3) "c"4) "b"5) "a"6) "xyz"7) "3"

Set

set对外提供的功能类似list是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是个选择,并且set提供了判断某个成员是否在一个set集合内的重要接口

Redis的set是string类型的无序集合,底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)

#将一个或多个member元素加入到集合key中,已经存在于集合的member元素将被忽略127.0.0.1:6379> sadd testSet a b c d e 1 2 3(integer) 8#取出该集合的所有值127.0.0.1:6379> SMEMBERS testSet1) "3"2) "b"3) "d"4) "1"5) "e"6) "2"7) "a"8) "c"#判断该集合是否有该value值127.0.0.1:6379> SISMEMBER testSet x(integer) 0#返回该集合的元素个数127.0.0.1:6379> scard testSet(integer) 8#删除集合中的某个元素127.0.0.1:6379> srem testSet a 1(integer) 2#随机从该集合中弹出一个值(删除)127.0.0.1:6379> spop testSet"3"#随机从集合中取出n个值(不删除)127.0.0.1:6379> SRANDMEMBER testSet 31) "e"2) "2"3) "c"​​127.0.0.1:6379> sadd testSet 1 2 3 4 5(integer) 4127.0.0.1:6379> sadd testSet2 a b c d e x y z(integer) 8#返回两个集合的交集元素127.0.0.1:6379> sinter testSet testSet21) "b"2) "d"3) "e"4) "c"#返回两个集合的并集元素127.0.0.1:6379> sunion testSet testSet2 1) "3" 2) "x" 3) "b" 4) "d" 5) "5" 6) "e" 7) "z" 8) "2" 9) "c"10) "y"11) "4"12) "1"13) "a"#返回两个集合的差集元素(顺序有关)127.0.0.1:6379> sdiff testSet testSet21) "1"2) "2"3) "3"4) "4"5) "5"

hash

  • Redis hash是一个键值对集合
  • 是一个string类型的field和value的映射表。hash特别适合存储对象
  • 类似java里面的Map
#添加127.0.0.1:6379> hset userInfo user:1010:uid 1010(integer) 1#添加多个127.0.0.1:6379> hmset userInfo user:1010:username admin user:1010:password 123456OK#获取127.0.0.1:6379> hget userInfo user:1010:username"admin"#查询是否存在127.0.0.1:6379> hexists userInfo user:1010:uid(integer) 1#列出所有的field127.0.0.1:6379> hkeys userInfo1) "user:1010:uid"2) "user:1010:username"3) "user:1010:password"#列出所有值127.0.0.1:6379> hvals userInfo1) "1010"2) "admin"3) "123456"#列出所有键值对127.0.0.1:6379> hgetall userInfo1) "user:1010:1010"2) "1010"3) "user:1010:username"4) "admin"5) "user:1010:password"6) "123456"127.0.0.1:6379> hset userInfo user:1010:age 25(integer) 1#加步长127.0.0.1:6379> hincrby userInfo user:1010:age 10(integer) 35#没有则设置127.0.0.1:6379> hsetnx userInfo user:1010:sex 1(integer) 1#显示中文redis-cli --raw​

zset

Redis有序集合zset(sorted set)与普通集合set非常相似,是一个没有重复元素的字符串集合,不同之处是有序集合的每个成员都关联了一个评分(score),这个评分被用来按照从最低分到最高分的方式排序集合中的成员,集合的成员是唯一的,但是评分可以是重复的

因为元素是有序的,所以你可以很快的根据评分或者次序(position)来获取一个范围的元素,访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表

#添加一个或多个  分数 元素127.0.0.1:6379> zadd testzSet 100 a 20 b 1 x 500 abc(integer) 4#获取元素127.0.0.1:6379> zrange testzSet 0 -11) "x"2) "b"3) "a"4) "abc"#如果元素存在 则覆盖score127.0.0.1:6379> zadd testzSet 1000 x(integer) 0127.0.0.1:6379> zrange testzSet 0 -11) "b"2) "a"3) "abc"4) "x"#不同元素相同score可以添加127.0.0.1:6379> zrange testzSet 0 -11) "b"2) "a"3) "abc"4) "x"5) "xyz"#取出分数范围元素127.0.0.1:6379> zrangebyscore testzSet 1 2001) "b"2) "a"#取出元素排序127.0.0.1:6379> zrevrangebyscore testzSet 1 500#为元素的score加上增量zincrby key incerment value#删除该集合下指定值的元素zrem key value#统计该集合,分数区间的元素个数zcount key min max#返回该值在集合中的排名zrank key value
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值