Redis学习
1.1、redis中的key
1.使用客户端连接我们的服务器
2.常用的基础命令
常见的指令说明:
127.0.0.1:6379> set name jiang 设置key值
OK
127.0.0.1:6379> get name 获取key值
"jiang"
127.0.0.1:6379> EXISTS name 判断是否存在该key值
(integer) 1
127.0.0.1:6379> EXISTS names
(integer) 0
127.0.0.1:6379> move name 1 转移key的存储位置 后接数字为数据库编号
(integer) 1
127.0.0.1:6379> keys * 查询所有的key
1) "yao"
2) "jiang"
127.0.0.1:6379> FLUSHALL 清除redis缓存
OK
(empty array)
127.0.0.1:6379> flushdb 清除redis缓存
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> select 1 切换数据库
OK
127.0.0.1:6379[1]> expire name 10 设置key值的存活时间
(integer) 1
127.0.0.1:6379[1]> ttl name 查询key的剩余存活时间
(integer) 8
127.0.0.1:6379> type name 查询key的数据类型
string
127.0.0.1:6379> append name weikang 追加key
(integer) 12
127.0.0.1:6379> get name
"jiangweikang"
127.0.0.1:6379> strlen name 查询key值的长度
(integer) 12
String(字符串)
##############################################
常见的应用 :
1、记录 +1 或者 -1 : 使用 incr 和 decr 实现自动加减
127.0.0.1:6379> set view 1
OK
127.0.0.1:6379> get view
"1"
127.0.0.1:6379> incr view
(integer) 2
127.0.0.1:6379> get view
"2"
127.0.0.1:6379> incr view
(integer) 3
127.0.0.1:6379> get view
"3"
127.0.0.1:6379> decr view
(integer) 2
127.0.0.1:6379> get view
"2"
127.0.0.1:6379> decr view
(integer) 1
127.0.0.1:6379> decr view
(integer) 0
127.0.0.1:6379> decr view
(integer) -1
127.0.0.1:6379> get view
"-1"
2、截取字符串 :getrange key 起始下标 终止下标
127.0.0.1:6379> set name jiangweikang
OK
127.0.0.1:6379> get name
"jiangweikang"
127.0.0.1:6379> getrange name 0 4
"jiang"
127.0.0.1:6379> getrange name 0 -1
"jiangweikang"
127.0.0.1:6379>
3、替换 setrange
127.0.0.1:6379> set age 123456
OK
127.0.0.1:6379> get age
"123456"
127.0.0.1:6379> setrange age 0 11111
(integer) 6
127.0.0.1:6379> get age
"111116"
4、设置key值同时设置过期时间 setex (set with expire)
127.0.0.1:6379> setex name2 30 yao
OK
127.0.0.1:6379> keys *
2) "name2"
127.0.0.1:6379> ttl name2
(integer) -2
5、判断是否存在 setnx (set if not exits)
127.0.0.1:6379> setnx name2 jiang 设置成功
(integer) 1
127.0.0.1:6379> setnx name2 jiang 存在该key了 设置失败
(integer) 0
6、批量设置 mset 和 获取 mget
127.0.0.1:6379> mset k1 v1 k2 v2 k v3
OK
127.0.0.1:6379> keys *
1) "k"
2) "k2"
3) "k1"
127.0.0.1:6379> mget k1 k2 k
1) "v1"
2) "v2"
3) "v3"
6、批量 msetnx 遵从原子性
127.0.0.1:6379> msetnx k4 v4 k2 v2 失败
(integer) 0
127.0.0.1:6379> msetnx k4 v4 k5 v5 成功,原子性操作 ,一起失败, 一起成功!
(integer) 1
127.0.0.1:6379> keys *
1) "k4"
2) "k"
3) "k5"
4) "k2"
5) "k1"
127.0.0.1:6379>
7.设置对象
127.0.0.1:6379> set user:1 {name:zhangsan,age:3}
OK
127.0.0.1:6379> get user
(nil)
127.0.0.1:6379> get user:1
"{name:zhangsan,age:3}"
127.0.0.1:6379> get user:1:name
(nil)
########### 这里是一个巧妙的设计 user:{id}:{field},在redis中完全ok!
127.0.0.1:6379> mset user:1:name zhangsan user:1:age 2
OK
127.0.0.1:6379> mget user:1:name user:1:age
1) "zhangsan"
2) "2"
8、getset 先get再set
127.0.0.1:6379> set key redis
OK
127.0.0.1:6379> get key'
Invalid argument(s)
127.0.0.1:6379> get key
"redis"
127.0.0.1:6379> getset key mogodb
"redis"
127.0.0.1:6379> get key
"mogodb"
常用场景:
- 计数器
- 统计多单位的数量
- 对象缓存存储
- 粉丝数 uuid:82837489:follow incr / decr
更多的指令可以去官网去查:[官网命令地址](http://redis.cn/commands.html)