Redis将 数据放在内存中,因此读写性能是非常惊人的。与此同时,Redis也提供了 持久化机制,能够将内存中的数据保存到硬盘上,在发生意外状况时数据也不会丢掉
Redis字符串的操作
127.0.0.1:6379> set x 100
OK
127.0.0.1:6379> get x
"100"
127.0.0.1:6379> set x 23
OK
127.0.0.1:6379> get x
"23"
127.0.0.1:6379> set y 90 ex 10
OK
127.0.0.1:6379> get y
"90"
127.0.0.1:6379> get y
(nil)
127.0.0.1:6379> set y hello ex 20
OK
127.0.0.1:6379> get y
"hello"
127.0.0.1:6379> ttl y #查看还有多长时间过期
(integer) 12
127.0.0.1:6379> ttl y
(integer) 8
127.0.0.1:6379> ttl y
(integer) 2
127.0.0.1:6379> get y
(nil)
127.0.0.1:6379> ttl x
(integer) -1 #-1表示永不过期
127.0.0.1:6379> mset p 20 q 30 t 50 m 60 #设置多个值
OK
127.0.0.1:6379> mget p t m q #获取多个值
1) "20"
2) "50"
3) "60"
4) "30"
127.0.0.1:6379> strlen name #获取长度
(integer) 4
127.0.0.1:6379> incr q # 自增加1
(integer) 31
127.0.0.1:6379> incrby p 18 #为键 key 储存的数字值加上增量 increment
(integer) 38
127.0.0.1:6379> get p
"38"
127.0.0.1:6379> decr q #减1
(integer) 30
Redis哈希表的使用
127.0.0.1:6379> hset dog name dahaung color yellow
(integer) 2
127.0.0.1:6379> hset dog age 3 gender female
(integer) 2
"""
相当于字典套字典
"dog":{
"name":"dahuang",
"color":"yellow",
"age":3,
"gender":"female"
}
"""
127.0.0.1:6379> hget dog name
"dahaung"
127.0.0.1:6379> hget dog age
"3"
127.0.0.1:6379> hget dog color
"yellow"
127.0.0.1:6379> hexists dog name #dog是否有name属性,结果为1代表有此属性
(integer) 1
127.0.0.1:6379> hexists dog weight #dog是否有weight属性,结果为0代表没有此属性
(integer) 0
127.0.0.1:6379> hdel dog age gender #删除属性
(integer) 2
127.0.0.1:6379> hget dog age
(nil)
127.0.0.1:6379> hlen dog #得到dog有几个属性
(integer) 2
127.0.0.1:6379> hstrlen dog name #name属性的长度
(integer) 7
127.0.0.1:6379> hkeys dog #得到所有的key
1) "name"
2) "color"
127.0.0.1:6379> hvals dog #得到所有的值
1) "dahaung"
2) "yellow"
127.0.0.1:6379> hgetall dog
1) "name"
2) "dahaung"
3) "color"
4) "yellow"
Redis列表的使用
redis里的列表可以实现类似于队列和栈的结构
"""
队列:先进先出 FIFO
栈:后进先出 last in first out
"""
存数据
127.0.0.1:6379> lpush names zhangsan lisi wangwu #left push,往左边放数据,先放zhangsan ,再往左边放lisi,再往左边放wangwu,所欲拿出来的数据是 wangwu lisi zhangsan
(integer) 3
或取数据
127.0.0.1:6379> lrange names 0 -1
1) "wangwu"
2) "lisi"
3) "zhangsan"
127.0.0.1:6379> rpush names jack jerry
(integer) 5
127.0.0.1:6379> lrange names 0 -1
1) "wangwu"
2) "lisi"
3) "zhangsan"
4) "jack"
5) "jerry"
127.0.0.1:6379> lpop names #删除数据
"wangwu"
127.0.0.1:6379> lrange names 0 -1
1) "lisi"
2) "zhangsan"
3) "jack"
4) "jerry"
127.0.0.1:6379> lset names 2 rose #把下标为2的改为rose
OK
127.0.0.1:6379> lrange names 0 -1
1) "lisi"
2) "zhangsan"
3) "rose"
4) "jerry"
127.0.0.1:6379> llen names
(integer) 4
127.0.0.1:6379> lindex names 3
"jerry"
Redis集合的使用
127.0.0.1:6379> sadd wzry member zs li dsb kym hxy yx
(integer) 7
127.0.0.1:6379> sadd jdqs zhangsan wangwu lisi
(integer) 3
127.0.0.1:6379> sismember wzry lisi
(integer) 0
127.0.0.1:6379> sismember wzry kym #kym是否是wzry里的成员,1为是,0为不是
(integer) 1
127.0.0.1:6379> srandmember wzry 3 #随机取3个
1) "zs"
2) "dsb"
3) "member"
127.0.0.1:6379> smembers jdqs #拿到jdqs里所有成员
1) "lisi"
2) "wangwu"
3) "zhangsan"
127.0.0.1:6379> sdiff wzry jdqs
1) "yx"
2) "li"
3) "zs"
4) "kym"
5) "hxy"
6) "dsb"
7) "member"
127.0.0.1:6379> sunion wzry jdqs #合并去重
1) "zs"
2) "lisi"
3) "kym"
4) "hxy"
5) "dsb"
6) "member"
7) "yx"
8) "li"
9) "zhangsan"
10) "wangwu"
127.0.0.1:6379> sinter wzry jdqs
(empty array)
Redis有序集合的使用
127.0.0.1:6379> zadd rank 50 wanglei 30 huangbingkun 80 kangyiming 90 lisi 70 wangwu
(integer) 5
127.0.0.1:6379> zrange rank 0 -1
1) "huangbingkun"
2) "wanglei"
3) "wangwu"
4) "kangyiming"
5) "lisi"
127.0.0.1:6379> zrank rank kangyiming #排名
(integer) 3
127.0.0.1:6379> zrevrange rank 0 -1 #倒序
1) "lisi"
2) "kangyiming"
3) "wangwu"
4) "wanglei"
5) "huangbingkun"
127.0.0.1:6379> zrevrange rank 0 -1 withscores
1) "lisi"
2) "90"
3) "kangyiming"
4) "80"
5) "wangwu"
6) "70"
7) "wanglei"
8) "50"
9) "huangbingkun"
10) "30"
127.0.0.1:6379> zincrby rank 5 lisi # 给lisi加5分
"95"