1.redis-server启动
2.命令返回值:状态,错误,整数,字符串,多字符串
配置文件
redis-server (文件) 来按照文件配置启动
热更新配置:config set loglevel warning
多数据库
- 默认16个 select 1 选择
- 不是独立的
操作
set bar 1`127.0.0.1:6379> keys pattern
(empty list or set)
127.0.0.1:6379> keys
(error) ERR wrong number of arguments for ‘keys’ command
127.0.0.1:6379> keys pattern
(empty list or set)
127.0.0.1:6379> set bar 1
OK
127.0.0.1:6379> keys *
- “bar”
- “key”
127.0.0.1:6379> exists bar
(integer) 1
127.0.0.1:6379> exists bar2D
(integer) 0
127.0.0.1:6379> del key
(integer) 1
127.0.0.1:6379> del key
(integer) 0
127.0.0.1:6379> del ‘keys “b*”’
(integer) 0
127.0.0.1:6379> keys
(error) ERR wrong number of arguments for ‘keys’ command
127.0.0.1:6379> keys * - “bar”
127.0.0.1:6379> redis-cli del ‘redis-cli keys “b*”’
(error) ERR unknown commandredis-cli
, with args beginning with:del
,redis-cli keys "b*"
,
127.0.0.1:6379> type bar
string
127.0.0.1:6379> set barr 1
OK
127.0.0.1:6379> keys * - “barr”
- “bar”
`
字符串类型
最大512MB
set key value
get key
自增
127.0.0.1:6379> incr bar
(integer) 2
127.0.0.1:6379> incr bar
(integer) 3
只能自增整数
incrby可以指定值
127.0.0.1:6379> incrby bar 2
(integer) 7
127.0.0.1:6379> decrby bar 2
(integer) 5
append key “aabb”
strlen key 获取长度
UTF-8编码
MGST和MSET同时控制多个kv
127.0.0.1:6379> mset name zqm age 22
OK
127.0.0.1:6379> mget name age
- “zqm”
- “22”
127.0.0.1:6379> bitcount foo 0 1
(integer) 6
选择一种类型位运算给字符串,保存在res中结果127.0.0.1:6379> bitop or res bar barr
(integer) 5
bitpos bar 1 第一个为0/1的二进制位的位置
127.0.0.1:6379> bitpos bar 1 2 3 // 制定字节范围,不存在则是len
(integer) 10
127.0.0.1:6379> getbit foo 6
(integer) 1
散列类型
hset/hget hset更新返回0插入返回1
27.0.0.1:6379> hset car price 500
(integer) 1
127.0.0.1:6379> hset car name bmw
(integer) 1
127.0.0.1:6379> hget car name
“bmw”
127.0.0.1:6379> hget car price
“500”
hMset/hmget 多个字段
hgetall 获得car相关所有字段
127.0.0.1:6379> hgetall car
- “price”
- “500”
- “name”
- “bmw”
hexists name field判断存在
127.0.0.1:6379> hexists car model
(integer) 0
127.0.0.1:6379> hexists car name
(integer) 1
hsetnx不存在赋值 原子
127.0.0.1:6379> hexists car name
(integer) 1
127.0.0.1:6379> hsetnx car model vip
(integer) 1
127.0.0.1:6379> hincrby car price 300 //增加
(integer) 800
127.0.0.1:6379> hdel car model //删除
(integer) 1
//获取字段名 , 长度 ,值
127.0.0.1:6379> hlen car
(integer) 2
127.0.0.1:6379> hval car
(error) ERR unknown command hval
, with args beginning with: car
,
127.0.0.1:6379> hvals car
- “800”
- “bmw”
127.0.0.1:6379> hkeys car - “price”
- “name”
列表类型
双向链表实现 最多2^31 - 1 个元素
Lpush/Rpush 左右append元素
127.0.0.1:6379> lpush numbers 1
(integer) 1
lpop/rpop左右弹出
127.0.0.1:6379> lpop numbers
“3”
127.0.0.1:6379> rpop numbers
“1”
llen 获得长度
127.0.0.1:6379> llen numbers
(integer) 2
lrange 获取st,ed包括ed的元素 不删除
127.0.0.1:6379> lrange numbers 0 2
- “2”
- “2”
支持负索引,-2右边第二个 -1右边第一个
lrem key count value
count > 0 从左边的count个里删除值等于value的
count < 0 从右边
count = 0 整个序列
127.0.0.1:6379> rpush numbers 3 4 5
(integer) 5
127.0.0.1:6379> lrem numbers 1 2
(integer) 1
127.0.0.1:6379> lrange numbers 0 -1
- “2”
- “3”
- “4”
- “5”
lindex/lset获得与赋值
127.0.0.1:6379> lindex numbers 1
“3”
127.0.0.1:6379> lset numbers 2 66
OK
127.0.0.1:6379> lindex numbers 2
“66”
Ltrim只保留片段
127.0.0.1:6379> ltrim numbers 0 2
OK
127.0.0.1:6379> lrange numbers 0 -1
- “2”
- “3”
- “66”
Linsert寻找并且插入,寻找失败则插入失败
127.0.0.1:6379> linsert numbers before 66 20
(integer) 4
127.0.0.1:6379> lrange numbers 0 -1
- “2”
- “3”
- “20”
- “66”
127.0.0.1:6379> linsert numbers before 67 20
(integer) -1
127.0.0.1:6379> linsert numbers after 69 20
(integer) -1
127.0.0.1:6379> lrange numbers 0 -1 - “2”
- “3”
- “20”
- “66”
RpopLpush from to 从from右边弹出 加入到to的左边
127.0.0.1:6379> lrange numbers 0 -1
- “2”
- “3”
- “20”
- “66”
127.0.0.1:6379> lpush numbers1 32
(integer) 1
127.0.0.1:6379> rpoplpush numbers numbers1
“66”
127.0.0.1:6379> lrange numbers 0 -1 - “2”
- “3”
- “20”
127.0.0.1:6379> lrange numbers1 0 -1 - “66”
- “32”
集合类型
2^32 - 1个 hash实现o1
无则创建key
127.0.0.1:6379> sadd letter a //添加
(integer) 1
127.0.0.1:6379> sadd letter b c d//添加
(integer) 3
127.0.0.1:6379> srem letter c//remove
(integer) 1
127.0.0.1:6379> smembers letter//查看所有
- “a”
- “b”
- “d”
127.0.0.1:6379> sismember letter d//判断是不是member
(integer) 1
集合运算
sdiff A B C 集合的A-B-C
127.0.0.1:6379> sadd set1 a b c
(integer) 3
127.0.0.1:6379> sadd set2 b c d
(integer) 3
127.0.0.1:6379> sadd set3 d e f
(integer) 3
127.0.0.1:6379> sdiff set1 set2 set3
- “a”
sinsert求交集
127.0.0.1:6379> sinter set1 set2 set3
(empty list or set)
sunion求并集
127.0.0.1:6379> sunion set1 set2 set3
- “d”
- “e”
- “a”
- “f”
- “c”
- “b”
scard获得数量 / sdiffstore存下集合运算结果
127.0.0.1:6379> scard set1
(integer) 3
127.0.0.1:6379> sdiffstore set4 set1 set2
(integer) 1
127.0.0.1:6379> srandmember set1 -2 // 负数代表取出的元素可能相同,
- “a”
- “a”
127.0.0.1:6379> srandmember set1 2 - “b”
- “c”
spop随机选一个弹出
127.0.0.1:6379> spop set1
“b”
有序集合类型
Zadd key score member//存在则变为修改
127.0.0.1:6379> zadd sort 1 a
(integer) 1
127.0.0.1:6379> zadd sort 2 a
(integer) 0
127.0.0.1:6379> zscore sort a // 查询sort的a
“2”
zrange按照score大小返回区间内元素log(n+m)元素个数,查询区间长度 反向位zrevrange
127.0.0.1:6379> zrange sort 0 -1 withscores
- “a”
- “2”
- “b”
- “3”
- “s”
- “32”
127.0.0.1:6379> zrange sort 0 -1 withscores - “a”
- “2”
- “b”
- “3”
- “s”
- “32”
zrangebyscore key min max [withscores] [limit offset count ] //获得指定分数范围的元素
127.0.0.1:6379> zrangebyscore sort (2 5 //加括号代表开区间
- “b”
-inf 和 +inf代表无穷
limit offset count 获取元素集合基础上,起点偏移offset个,之后取得前count个
127.0.0.1:6379> zrangebyscore sort (2 +inf limit 1 1
- “s”
增加某个元素的score
127.0.0.1:6379> zincrby sort 3 a
“5”
127.0.0.1:6379> zcard sort // 获得个数
(integer) 3
127.0.0.1:6379> zcount sort 1 10 // 指定分数范围内个数
(integer) 2
127.0.0.1:6379> zrem sort a // 按照分数移除
(integer) 1
127.0.0.1:6379> zremrangebyrank sort 0 0 // 移除排名在st,ed的元素
(integer) 1
127.0.0.1:6379> zremrangebyscore sort 0 0//移除分数在st,ed的元素
(integer) 0
zrank key member 获得排名 zrevrange反向排名 , 即第几小,第几大
计算有序集合的交集
zinterstore result keynums key[keys…] [weight …] [aggregate sum|min|max]
sum:求交集时多个集合中元素取sum
min:…取min
Max:取max
通过weight设置权重 如weight 1 0.1
zunionstore的用法类似