String(字符串)
string 是 redis 最基本的类型,一个 key 对应一个 value。string 类型的值最大能存储 512MB。
基本命令:
127.0.0.1:6379> set key1 hello #设置值
OK
127.0.0.1:6379> get key1 #获取值
"hello"
127.0.0.1:6379> keys * #获取所有key
1) "key1"
127.0.0.1:6379> exists key1 #判断一个key是否存在
(integer) 1
127.0.0.1:6379> append key1 "world" #追加字符串,如果key不存在就set kye
(integer) 10
127.0.0.1:6379> get key1
"helloworld"
127.0.0.1:6379> strlen key1 #获取字符串的长度
(integer) 10
自增自减:
127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incr views #自增1
(integer) 1
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> decr views #自减1
(integer) 1
127.0.0.1:6379> decr views
(integer) 0
127.0.0.1:6379> decr views
(integer) -1
127.0.0.1:6379> incrby views 10 #设置增加步长为10
(integer) 9
127.0.0.1:6379> decrby views 5 ##设置减少步长为5
(integer) 4
字符串范围:
127.0.0.1:6379> set str "hello redis"
OK
127.0.0.1:6379> get str
"hello redis"
127.0.0.1:6379> getrange str 0 3 #截取字符串 [0-3]
"hell"
127.0.0.1:6379> getrange str 0 -1 #截取全部字符串 和get key 一样
"hello redis"
替换值:
127.0.0.1:6379> set key1 abcdefg
OK
127.0.0.1:6379> get key1
"abcdefg"
127.0.0.1:6379> setrange key1 1 *** #key1中从第1位开始替换 替换成***
(integer) 7
127.0.0.1:6379> get key1
"a***efg"
设置过期时间:
- #setex (set with expire) 设置过期时间
- #setnx (set if not exist) 不存在再设置(在分布式锁中常用)
127.0.0.1:6379> setex key2 20 "hello" #设置key2的值位hello,30秒后过期
OK
127.0.0.1:6379> ttl key2
(integer) 13
127.0.0.1:6379> setnx mykey "redis" #如果mykey不存在,创建mykey
(integer) 1
127.0.0.1:6379> keys *
1) "key1"
2) "mykey"
3) "str"
127.0.0.1:6379> ttl key2
(integer) -2
127.0.0.1:6379> setnx mykey "MongDB" #如果mykey存在,创建失败
(integer) 0
127.0.0.1:6379> get mykey
"redis"
同时操作多个值:
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 #同时设置多个值
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k3"
3) "k1"
127.0.0.1:6379> mget k1 k2 k3 #同时获取多个值
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v1 k4 v4 #msetnx是一个原子性的操作,要么都成功要么都失败
(integer) 0
127.0.0.1:6379> get k4
(nil)
存储对象:
127.0.0.1:6379> mset user:1:name lyr user:1:age 3 #设置user:{name}:{age}
OK
127.0.0.1:6379> mget user:1:name user:1:age
1) "lyr"
2) "3"
getset:
127.0.0.1:6379> getset db redis #如果不存在值,返回null
(nil)
127.0.0.1:6379> get db
"redis"
127.0.0.1:6379> getset db mongdb #如果存在值先获取原来的值,再设置新的值
"redis"
127.0.0.1:6379> get db
"mongdb"