Redis基础数据结构

字符串

Redis中的字符串不像python,是可变字符串。字符串作为变量,创建时会开辟一个比初始字符串本身更大的内存空间,后续扩大该字符串内容时,为该字符串分配的内存空间也会同步变大。当分配的内存小于1M时,该空间成倍扩大;超过1M时,每次扩展最大扩展1M。单个字符串的存储上限为512M。

设置过期时间

缓存页面,数据量大,但是动态,一直不过期一直拿不到,设置n秒,过期来新的,服务端压力低。

expire key seconds

127.0.0.1:6379[4]> keys *
1) "db"
2) "db1"
127.0.0.1:6379[4]> expire db 3
(integer) 1
127.0.0.1:6379[4]> keys *
1) "db"
2) "db1"
127.0.0.1:6379[4]> keys *
1) "db1"

setex key seconds value

127.0.0.1:6379[4]> setex db2 3 kafka 
OK
127.0.0.1:6379[4]> keys *
1) "db1"
2) "db2"
127.0.0.1:6379[4]> keys *
1) "db1"

使用ttl查询过期时间

127.0.0.1:6379[4]> setex db2 10 kafka
OK
127.0.0.1:6379[4]> ttl db2
(integer) 7
127.0.0.1:6379[4]> ttl db2
(integer) 4
127.0.0.1:6379[4]> ttl db1
(integer) -1
127.0.0.1:6379[4]> ttl db2
(integer) -2

数值运算

127.0.0.1:6379[4]> set num 1
OK
127.0.0.1:6379[4]> get num
"1"
127.0.0.1:6379[4]> incr num
(integer) 2
127.0.0.1:6379[4]> get num
"2"
127.0.0.1:6379[4]> incr num
(integer) 3
127.0.0.1:6379[4]> get num
"3"
127.0.0.1:6379[4]> decr num
(integer) 2
127.0.0.1:6379[4]> get num
"2"
127.0.0.1:6379[4]> incrby num 3
(integer) 5
127.0.0.1:6379[4]> get num
"5"
127.0.0.1:6379[4]> decrby num 7
(integer) -2
127.0.0.1:6379[4]> get num
"-2"

超出范围

127.0.0.1:6379[4]> set num1 10293871234180912347809
OK
127.0.0.1:6379[4]> get num1
"10293871234180912347809"
127.0.0.1:6379[4]> incr num1
(error) ERR value is not an integer or out of range

批量设置键值对

插入

mset key value key value key value

127.0.0.1:6379[4]> mset int1 10 int2 20 int3 30 int4 40 int5 50
OK
127.0.0.1:6379[4]> get int3
"30"

查询

mget key key key key

127.0.0.1:6379[4]> mget int1 int2 int3 int4 int5
1) "10"
2) "20"
3) "30"
4) "40"
5) "50"

列表

列表最多可存储 2 32 − 1 2^{32}-1 2321个元素。列表插入时间复杂度为 O ( 1 ) O(1) O(1),索引定位实际上很慢, O ( n ) O(n) O(n)
使用lpush key value1 value2 value3从左插入,结果形式为key: [value3, value2, value1]。如果改为rpush,则从右侧添加,key: [value1, value2, value3]

比如现在在数据库2中设置列表

127.0.0.1:6379[4]> select 2
OK
127.0.0.1:6379[2]> lpush l1 v1 v2 v3
(integer) 3
127.0.0.1:6379[2]> rpush l2 v1 v2 v3
(integer) 3

查询

lpop key

127.0.0.1:6379[2]> lpop l1
"v3"
127.0.0.1:6379[2]> lpop l1
"v2"
127.0.0.1:6379[2]> lpop l1
"v1"
127.0.0.1:6379[2]> lpop l1
(nil)

rpop key

127.0.0.1:6379[2]> rpop l2
"v3"
127.0.0.1:6379[2]> rpop l2
"v2"
127.0.0.1:6379[2]> rpop l2
"v1"
127.0.0.1:6379[2]> rpop l2
(nil)

rpush+lpop 模拟队列
rpush+rpop 模拟栈

插入

linsert key after value value

127.0.0.1:6379[2]> rpush l3 v1 v2 v3 v5 v6
(integer) 5
127.0.0.1:6379[2]> linsert l3 after v3 v4
(integer) 6
127.0.0.1:6379[2]> lpop l3
"v1"
127.0.0.1:6379[2]> lpop l3
"v2"
127.0.0.1:6379[2]> lpop l3
"v3"
127.0.0.1:6379[2]> lpop l3
"v4"
127.0.0.1:6379[2]> lpop l3
"v5"
127.0.0.1:6379[2]> lpop l3
"v6"
127.0.0.1:6379[2]> lpop l3
(nil)

before

127.0.0.1:6379[2]> linsert l4 before v4 v3
(integer) 4
127.0.0.1:6379[2]> lpop l4
"v1"
127.0.0.1:6379[2]> lpop l4
"v2"
127.0.0.1:6379[2]> lpop l4
"v3"
127.0.0.1:6379[2]> lpop l4
"v4"
127.0.0.1:6379[2]> lpop l4
(nil)
127.0.0.1:6379[2]> linsert l4 before v4 v3
(integer) 0

覆盖

127.0.0.1:6379[2]> rpush l5 v1 v2 v3 v4
(integer) 4
127.0.0.1:6379[2]> lset l5 2 v5
OK
127.0.0.1:6379[2]> lpop l5
"v1"
127.0.0.1:6379[2]> lpop l5
"v2"
127.0.0.1:6379[2]> lpop l5
"v5"
127.0.0.1:6379[2]> lpop l5
"v4"
127.0.0.1:6379[2]> lpop l5
(nil)
127.0.0.1:6379[2]> rpush l6 v1 v2 v3 v4
(integer) 4
127.0.0.1:6379[2]> lset l6 4 v5
(error) ERR index out of range
127.0.0.1:6379[2]> lindex l6 3
"v4"
127.0.0.1:6379[2]> lindex l6 4
(nil)
127.0.0.1:6379[2]> lrange l6 2 3
1) "v3"
2) "v4"
127.0.0.1:6379[2]> lrange l6 0 5
1) "v1"
2) "v2"
3) "v3"
4) "v4"
127.0.0.1:6379[2]> lrange l6 -1 5
1) "v4"
127.0.0.1:6379[2]> lrange l6 -2 5
1) "v3"
2) "v4"
127.0.0.1:6379[2]> lrange l6 3 -1
1) "v4"
127.0.0.1:6379[2]> lrange l6 -2 -3
(empty array)

哈希表

字典中的字典。
最多能存储 2 32 − 1 2^{32}-1 2321个键值对。
对象。
hset key field value

127.0.0.1:6379[2]> select 8
OK
127.0.0.1:6379[8]> hset cat colour grey legs 4 cry meow
(integer) 3
127.0.0.1:6379[8]> hset cat maxJump 7
(integer) 1
127.0.0.1:6379[8]> hget cat colour
"grey"
127.0.0.1:6379[8]> hget cat maxJump
"7"
127.0.0.1:6379[8]> hmget cat maxJump legs cry
1) "7"
2) "4"
3) "meow"
127.0.0.1:6379[8]> hgetall cat
1) "colour"
2) "grey"
3) "legs"
4) "4"
5) "cry"
6) "meow"
7) "maxJump"
8) "7"
127.0.0.1:6379[8]> hkeys cat
1) "colour"
2) "legs"
3) "cry"
4) "maxJump"
127.0.0.1:6379[8]> hvals cat
1) "grey"
2) "4"
3) "meow"
4) "7"
127.0.0.1:6379[8]> hlen cat
(integer) 4

集合

元素唯一,不能重复
添加查找删除 O ( 1 ) O(1) O(1)
sadd key member member member

127.0.0.1:6379[8]> sadd animal cat dog fish
(integer) 3
127.0.0.1:6379[8]> smembers animal
1) "fish"
2) "cat"
3) "dog"
127.0.0.1:6379[8]> scard animal
(integer) 3
127.0.0.1:6379[8]> srandmember animal
"fish"
127.0.0.1:6379[8]> srandmember animal
"dog"
127.0.0.1:6379[8]> srandmember animal
"fish"
127.0.0.1:6379[8]> sadd PhD dr1 dr2 dr3
(integer) 3
127.0.0.1:6379[8]> sadd female mrs1 dr2 dr3 mrs4
(integer) 4
127.0.0.1:6379[8]> sinter PhD female
1) "dr3"
2) "dr2"
127.0.0.1:6379[8]> sdiff PhD female
1) "dr1"
127.0.0.1:6379[8]> sdiff female PhD
1) "mrs1"
2) "mrs4"
127.0.0.1:6379[8]> sunion PhD female
1) "mrs1"
2) "dr3"
3) "dr2"
4) "mrs4"
5) "dr1"

有序集合

每个value关联一个score,redis基于score从小到大排序。zadd key score value score value

127.0.0.1:6379[8]> zadd students 69 Amy 80 Beenzino 77 Cathy 82 Davey 92 Eminem
(integer) 5
127.0.0.1:6379[8]> zrange students 0 3
1) "Amy"
2) "Cathy"
3) "Beenzino"
4) "Davey"
127.0.0.1:6379[8]> zrange students 2 -1
1) "Beenzino"
2) "Davey"
3) "Eminem"

zrange key min max withscores

127.0.0.1:6379[8]> zrange students 0 -1 withscores
 1) "Amy"
 2) "69"
 3) "Cathy"
 4) "77"
 5) "Beenzino"
 6) "80"
 7) "Davey"
 8) "82"
 9) "Eminem"
10) "92"

zcard key

127.0.0.1:6379[8]> zcard students
(integer) 5

zscore key value

127.0.0.1:6379[8]> zscore students Amy
"69"

zincrby key score value

127.0.0.1:6379[8]> zincrby students 5 Amy
"74"
127.0.0.1:6379[8]> zincrby students -9 Amy
"65"

zcount key min max

127.0.0.1:6379[8]> zcount students 77 92
(integer) 4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值