Redis五大数据类型-String(字符串)
Redis-key的基本命令
Redis命令
Redis命令:Redis命令
47.107.74.202:9807> move name 1 # 移除当前的key
(integer) 1
47.107.74.202:9807> keys * # 查看当前数据库下的所有key
1) "age"
47.107.74.202:9807> set name wangjun # 创建key
OK
47.107.74.202:9807> keys *
1) "name"
2) "age"
47.107.74.202:9807> get name # 获取key的value
"wangjun"
47.107.74.202:9807> EXPIRE name 10 # 设置key的过期时间 单位是秒
(integer) 1
47.107.74.202:9807> ttl name # 查看当前key的剩余时间
(integer) 4
47.107.74.202:9807> ttl name
(integer) 2
47.107.74.202:9807> ttl name
(integer) 1
47.107.74.202:9807> ttl name
(integer) 0
47.107.74.202:9807> ttl name
(integer) -2
47.107.74.202:9807> get name
(nil)
47.107.74.202:9807> type name # 查看当前key的类型
string
47.107.74.202:9807> type age
string
String(字符串)
不要做一个只会 get set 的程序员
47.107.74.202:9807> set key1 v1 # 设置值
OK
47.107.74.202:9807> get key1 # 获得值
"v1"
47.107.74.202:9807> keys * # 获得所有key
1) "key1"
2) "name"
3) "age"
47.107.74.202:9807> EXISTS key1 # 判断某一个key是否存在
(integer) 1
47.107.74.202:9807> APPEND key1 "hello" # 追加字符串,如果当前key不存在,就是相当于set key
(integer) 7
47.107.74.202:9807> get key1
"v1hello"
47.107.74.202:9807> STRLEN key1 # 获取字符串的长度
(integer) 7
47.107.74.202:9807> APPEND key1 ",wangjun"
(integer) 15
47.107.74.202:9807> get key1
"v1hello,wangjun"
#######################################################################
47.107.74.202:9807> set views 0 # 初始浏览量为 0
OK
47.107.74.202:9807> get views
"0"
47.107.74.202:9807> incr views # 自增1 浏览量变为1
(integer) 1
47.107.74.202:9807> incr views
(integer) 2
47.107.74.202:9807> incr views
(integer) 3
47.107.74.202:9807> get views
"3"
47.107.74.202:9807> DECR views # 自减1 浏览量-1
(integer) 2
47.107.74.202:9807> DECR views
(integer) 1
47.107.74.202:9807> DECR views
(integer) 0
47.107.74.202:9807> DECR views
(integer) -1
47.107.74.202:9807> get views
"-1"
47.107.74.202:9807> INCRBY views 10 # 可以设置步长,指定增量!
(integer) 9
47.107.74.202:9807> INCRBY views 10
(integer) 19
47.107.74.202:9807> DECRBY views 5 # 可以设置步长,指定减量!
(integer) 14
字符串范围 range
47.107.74.202:9807> keys *
(empty array)
47.107.74.202:9807> set key1 "hello,wangjun" # 设置 key1 的值
OK
47.107.74.202:9807> get key1
"hello,wangjun"
47.107.74.202:9807> GETRANGE key1 0 3 # 截取字符串 [0,3]
"hell"
47.107.74.202:9807> GETRANGE key1 0 -1 # 获取全部字符串 和 get key是一样的
"hello,wangjun"
字符串替换
47.107.74.202:9807> set key2 abcdefg
OK
47.107.74.202:9807> get key2
"abcdefg"
47.107.74.202:9807> SETRANGE key2 1 xx
(integer) 7
47.107.74.202:9807> get key2
"axxdefg"
SETEX (set with expire)创建和设置过期时间
SETNX(set if not exist) 不存在则创建(在分布式锁中常常使用!)
47.107.74.202:9807> SETEX key3 30 "hello" # 设置key3 的值为 hello 30秒后过期
OK
47.107.74.202:9807> ttl key3
(integer) 27
47.107.74.202:9807> ttl key3
(integer) 25
47.107.74.202:9807> get key3
"hello"
47.107.74.202:9807> setnx key4 "redis" # 如果key4 不存在 则创建key4
(integer) 1
47.107.74.202:9807> keys *
1) "key2"
2) "key1"
3) "key4"
47.107.74.202:9807> ttl key3
(integer) -2
47.107.74.202:9807> setnx key4 "mongoDB" # 如果key4存在 则创建失败!
(integer) 0
47.107.74.202:9807> get key4
"redis"
批量创建
批量获取
47.107.74.202:9807> keys * # 同时设置多个值
(empty array)
47.107.74.202:9807> mset k1 v1 k2 v2 k3 v3
OK
47.107.74.202:9807> keys *
1) "k2"
2) "k3"
3) "k1"
47.107.74.202:9807> keys *
1) "k2"
2) "k3"
3) "k1"
47.107.74.202:9807> mget k1 k2 k3 # 同时获取多个值
1) "v1"
2) "v2"
3) "v3"
47.107.74.202:9807> msetnx k1 v1 k4 v4 # msetnx是一个原子性的操作,要么一起成功,要么一起失败! 由于k1存在了 所以创建失败
(integer) 0
47.107.74.202:9807> keys *
1) "k2"
2) "k3"
3) "k1"
对象
47.107.74.202:9807> set user:2 {name:wangjun,age:3} # 设置一个user:2 对象 值为json字符串来保存一个对象!
OK
47.107.74.202:9807> get user:2
"{name:wangjun,age:3}"
# 这里的key是一个巧妙的设计: user:{id}:{filed},如此设计在Redis中是完全可以的!
# 高阶玩法
47.107.74.202:9807> mset user:1:name zhangsan user:1:age 2
OK
47.107.74.202:9807> mget user:1:name user:1:age
1) "zhangsan"
2) "2"
getset 先get然后再set
47.107.74.202:9807> GETSET db redis # 如果不存在值,则返回nil 已经设置了key db 值为 redis
(nil)
47.107.74.202:9807> get db
"redis"
47.107.74.202:9807> GETSET db mongodb # 如果存在值,获取原来的值,并设置新的值
"redis"
47.107.74.202:9807> get db # 获取得到新的值
"mongodb"
版权申明
本文系作者 @WangJun 原创发布在wangjun's blog站点。未经许可,禁止转载。
暂无评论数据