redis官网:www.redis.io(英文)www.redis.cn(中文)
1.redis是单线程的
2.五大数据类型
Redis-key
keys * ,set 命令
127.0.0.1:6379[1]> keys * #查看所有的key
(empty array)
127.0.0.1:6379[1]> set name heai #set一个名为name的key 值为heai
OK
127.0.0.1:6379[1]> set age 10 #set一个名为age的key 值为heai
OK
127.0.0.1:6379[1]> keys *
1) "age"
2) "name" #得到所有的keyexists 命令 exists [keyname]
127.0.0.1:6379[1]> exists name #判断key是否存在
(integer) 1 #存在1否则0
127.0.0.1:6379[1]> exists age1
(integer) 0127.0.0.1:6379[1]> exists name
(integer) 1
127.0.0.1:6379[1]> exists age1
(integer) 0expire 命令 #设置过期时间 expire [key] [second],ttl [keyname]查看过期时间命令
127.0.0.1:6379[1]> expire name 10
(integer) 1
127.0.0.1:6379[1]> ttl name
(integer) 8
127.0.0.1:6379[1]> ttl name
(integer) 6
127.0.0.1:6379[1]> ttl name
(integer) 6
127.0.0.1:6379[1]> ttl name
(integer) 4
127.0.0.1:6379[1]> ttl name
(integer) 3
127.0.0.1:6379[1]> ttl name
(integer) 0
127.0.0.1:6379[1]> ttl name
(integer) -2flushall #清空所有的key
127.0.0.1:6379[1]> flushall
OK
127.0.0.1:6379[1]> keys *
String
127.0.0.1:6379> set key1 v1
OK
127.0.0.1:6379> get key1
"v1"
127.0.0.1:6379> append key1 "hello"
(integer) 7
127.0.0.1:6379> get key1
"v1hello"strlen [keyname] 获取字符串长度
127.0.0.1:6379> strlen key1
(integer) 7incr [keyname] #字段值自增1,decr [keyname] #自减1,incrby [keyname] [len] 自增[len]长度,decrby [keyname] [len]#自减长度
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> decr views
(integer) 1
127.0.0.1:6379> get views
"1"
127.0.0.1:6379> incrby views 11
(integer) 12
127.0.0.1:6379> get views
"12"
127.0.0.1:6379> decrby views 10
(integer) 2
127.0.0.1:6379> get views
"2"getrange [keyname] [start] [end] #得到范围长度类似substring(java)
127.0.0.1:6379> getrange key1 0 -1"hello world"
127.0.0.1:6379> getrange key1 0 3
"hell"
127.0.0.1:6379> getrange key1 0 -1setrange [keyname] [offset] [str] (替换指定位置开始的字符)
"hello 127.0.0.1:6379> setrange key1 1 xx
(integer) 11
127.0.0.1:6379> get key1
"hxxlo world"world"setex [keyname] [second] [str] #设置值的同时设置过期时间
127.0.0.1:6379> setex key3 30 "hello"
OK
127.0.0.1:6379> ttl key3
(integer) 25
127.0.0.1:6379> ttl key3
(integer) 24setnx [keyname] [value] #不存在 在设置(在分布式锁中常常使用)
127.0.0.1:6379> setnx sql mysql
(integer) 1
127.0.0.1:6379> get sql
"mysql"
127.0.0.1:6379> setnx sql orical
(integer) 0
127.0.0.1:6379> get sql
"mysql"mset [k] [v] [k] [v]...#批量设置键值
127.0.0.1:6379> mset key1 v1 key2 v2 key3 v3
OK
127.0.0.1:6379> keys *
1) "key1"
2) "key2"
3) "key3"msetnx [k] [v] [k] [v] #原子性操作要么成功,要么不成功
127.0.0.1:6379> msetnx key1 v1 key4 v4
(integer) 0
127.0.0.1:6379>set [key:str] {json} #存json格式数据
127.0.0.1:6379> set user:1 {name:zhangsan,age:3}
OK
127.0.0.1:6379> get user:1
"{name:zhangsan,age:3}"mset同理
127.0.0.1:6379> mset user:1:name heai user:1:age 10
OK
127.0.0.1:6379> get user:1
(nil)
127.0.0.1:6379> mget user:1:name user:1:age
1) "heai"
2) "10"getset [keyname] [value] #如果不存在值泽返回nil
127.0.0.1:6379> getset key1 name
(nil)
127.0.0.1:6379> set key1 name
OK
127.0.0.1:6379> getset key1 heai
"name"
127.0.0.1:6379> get key1
"heai"