Redis
key-value类型的缓存数据库
指定IP和端口连接redis:
./redis-cli -h ip -p port
Redis基本操作命令
命令 | 返回值 | 简介 |
---|---|---|
ping | PONG | 测试是否连接到Redis服务端 |
dbsize | 当前数据库key的数量(int) | 查看key的数量 |
select db | select index(默认0-15) | redis默认初始化16个数据库,selet可进行切换 |
flushdb | OK | 删除当前数据库的所有数据 |
exit/quit | 退出redis连接 |
Redis操作key的命令
命令 | 语法 | 介绍 |
---|---|---|
keys | keys pattern | 查找所有pattern匹配的key, pattern可使用通配符*,? |
exists | exists key[key...] | 判断key是否存在,存在返回1 不存在返回0 |
expire | expire key seconds | 设置key的生存时间,单位秒 |
ttl | time to live | 返回key的存活时间 -1key永生 -2key不存在 |
type | type key | 查看key的数据类型 none string list set zset hash |
del | del key[key...] | 删除key 返回删除的数量,不存在的key忽略 |
Redis的五种数据类型
数据类型 | 介绍 |
---|---|
string | 能存储任意格式字符串 包括图片 JSON对象等 最大512M |
hash | 适合存储对象,类似python dict java Map |
list | 有序可重复的list集合 |
set | 无序不可重复的set集合 |
zset | sorted set 加了排序功能的set集合 |
Redis对string的操作
操作 | 介绍 |
---|---|
set key value | 向当前数据库添加键值对 |
get key | 查询key对应的value |
incr/decr key | 当key对应的value是数字类型字符串时可用,将value值加/减1 |
append key xxx | 在key对应的value的基础上追加xxx |
strlen key | 返回key对应value字符串的长度 |
getrange key start end | 对value字符串进行截取 |
setrange key offset xxx | 从value的offset开始用xxx替换 |
mset | mset k1 v1 k2 v2 k3 v3... |
mget | mget k1 k2 k3 .... |
Redis对hash的操作
操作 | 介绍 |
---|---|
hset key field value | hset boy name zhansan 创建hash 设置field-value |
hget key filed | 找到key对应的hash 去除file对应的value |
hmset key f1 v1 f2 v2 ... | 类似mset |
hmget key f1 f2 f3 ... | 类似mget |
hgetall key | 查询key对应的hash对象的所有field-value |
hdel key | 删除key对应的hash |
hkeys key | 返回key对应的hash的所有filed |
hvals key | 返回key对应的hash的所有value |
hexists key field | 判断field是否存在 |
Redis对list的操作
操作 | 介绍 |
---|---|
lpush key value[value...] | 将一个或多个值插入到列表的左边,返回新list长度 |
rpush | 从右边插入 |
lrange key start stop | list截取 |
llen key | 返回list长度 |
lindex key index | 返回下标为index的list元素 |
lrem key count value | count=0 删所有与value相等的值,count>0从左开始第一个 count<0从右开始第一个 |
lset key index value | 实际上是修改下标为index的元素 list长度不变 |
linsert key BEFORE/AFTER e value | 相对元素e的前后位置插入 |
lpop/rpop key | 删除左边/右边第一个元素 |
Redis对set类型的操作
操作 | 介绍 |
---|---|
sadd key e1[e2...] | 将一个或多个元素插入到key对应的set集合中 |
smembers key | 获取key对应集合中的所有元素 |
sismember key e | 判断e是否存在于key对应的集合,存在返回1 |
scard key | 返回key对应集合中元素个数 |
srem key e1[e2...] | 删除集合中一个OR多个元素,不存在的忽略 |
srandmember key [count] | 随机从集合中取出count个元素 count<0数据可能重复 |
spop key [count] | 从集合中随机删除count个元素 |
Redis对zset的操作
操作 | 介绍 |
---|---|
zadd key score1 e1[score2 e2...] | 在key对应的zset中添加一个或多个值 |
zrange key start stop [withscores] | 截取集合 -1表示最后元素 withscores表示返回e和score |
zrem key e1 e2... | 删除一个或多个值 不存在的忽略 |
zcard key | 返回集合元素数量 |
zrangebyscore key min max withscores | min<=score<=max 截取 |
zcount key min max | min<=score<=max 数量统计 |
Redis 安全设置
设置密码
redis.conf 中的requirepass
requirepass wodemima111
访问有密码的redis
连上之后使用auth wodemima111
./redis-cli -h ip -p port -a wodemima111
绑定ip
redis.conf #bind 127.0.0.1
可以在此设置多个以逗号分隔的允许访问IP
修改默认端口
redis.conf port 6379
Redis事务
关键字 | 介绍 |
---|---|
multi | 开启事务,接下来的命令会放入事务队列中但不执行 |
exec | 执行事务队列中的所有命令 |
discard | 放弃事务,情况事务队列 |
watch | 监控一个或多个key的值有没有被其他事务修改,被修改会导致事务被放弃 |
unwatch | 取消对所有key的监视 |
事务队列中的命令有语法错误
事务会被放弃
事务队列中的命令语法正确但执行出错
事务正常提交
watch机制 保证数据的一致性
相当于mysql中的乐观锁