Redis
介绍
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
安装
window版本地址:https://github.com/tporadowski/redis/releases
如果是Linux,请参照:https://www.runoob.com/redis/redis-install.html
下载完成后,cd到该路径执行下面命令,你也可配置环境直接运行。
redis-server.exe redis.windows.conf
查看是否安装成功
执行:redis-server
如果出现下图页面,即安装成功。注意:在运行过程中不关闭服务端。
安装服务
redis-server --service-install redis.windows-service.conf --loglevel verbose
安装服务的时候一定要在redis路径下执行该命令。
卸载服务
redis-server --service-uninstall
开启服务
redis-server --service-start
停止服务
redis-server --service-stop
基础设置
连接
如果不指定默认是本机。
$ redis-cli -h host -p port -a password
-h 服务器地址 -p 端口号 -a 密码
设置密码
第一种
1、直接通过配置文件,搜索:requirepass foobared 找到该命令。
2、取消注释,foobared改为自己的密码即可。
3、重新运行服务,必须加上配置文件
redis-server.exe redis.windows.conf
第二种
1. 命令行设置密码。
运行cmd切换到redis根目录,先启动服务端
>redis-server.exe
另开一个cmd切换到redis根目录,启动客户端
>redis-cli.exe -h 127.0.0.1 -p 6379
客户端使用config get requirepass命令查看密码
>config get requirepass 1)"requirepass" 2)"" //默认空
客户端使用config set requirepass yourpassword命令设置密码
>config set requirepass 123456 >OK
一旦设置密码,必须先验证通过密码,否则所有操作不可用
>config get requirepass (error)NOAUTH Authentication required
使用auth password验证密码
>auth 123456 >OK >config get requirepass 1)"requirepass" 2)"123456"
也可以退出重新登录
redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456
命令行设置的密码在服务重启后失效,所以一般不使用这种方式。
库操作
切换数据库
select index
例如:select 0
删除当前库所有键
flushdb
删除所有库的所有键
flushall
键操作
当前库中的键
keys pattern
匹配当前库所有键:keys *
匹配当前库n开头的键:keys n*
重命名键
修改 key 的名称
rename key newkey
仅当 newkey 不存在时,将 key 改名为 newkey 。
renamenx key newkey
当前键是否存在
exists key
例如:exists t1 t2
删除键
del key key1 ...
判断键类型
type key
获取随机的一个键
randomkey
获取键数量
dbsize
获取键过期时间
以毫毛返回:pttl
以秒返回:ttl key
-1表示永久不过期
设置键过期时间
以毫秒设置:pexpire key milliseconds
以秒设置:expire key seconds
移动键
move key db
例如:move test 1
字符串操作
设置值
单键设值:set key value
多键设值:mset key value key1 value1
键存在不设值:setnx key value
键全不在设值:msetnx key value key1 value1
设置过期时间:setex key seconds value
偏移量(不足时补,足够时替换):setrange key offset value
增加值:append key value
设置新值并返回上次值:getset key value
获取值
单键取值:get key
多键取值:mget key key1 .....
范围取值(0开始,顾头顾尾):getrange key start end
增量与减量
增一:incr key
减一:decr key
增多:incrby key increment
减多:decrby key increment
列表操作
添加值
尾添加:lpush key value value1 ...
首添加:rpush key value value1 ...
获取值
索引取值:lindex key index
切片取值:lrange key start end
更新值
索引更新:lset key index value
删除值
按数量删除:lrem key count value
删除首值,并返回:lpop key
删除尾值,并返回:rpop key
如果列表为空,等待删除首(0表示一直等待):blpop key key1 timeout
如果列表为空,等待删除尾(0表示一直等待):brpop key key1 timeout
删除自身列表的尾元素,添加到别的列表头部 :rpoplpush source destination
其它
键长度:llen key
截取(被截取的保留,其它删除):ltrim key start stop
集合操作
添加值
添加:sadd key value value1 ...
获取值
获取集合所有值:smembers key
随机返回集合中元素(不指定count,默认返回一个):srandmenber key count
删除值
删除:srmv key value value1 ...
随机删除,并返回该值:spop key
将指定值,从起始表到终表:smove source destination value
数学集合
键的交集:sinter key key1 ...
键的交集保存到另一个键当中:sinterstore destination key key1 ...
键的并集:sunion key key1 ...
键的交集保存到另一个键当中:sunionstore destination key key1 ...
键的差集:sdiff key key1 ...
键的交集保存到另一个键当中:sdiffstore destination key key1 ...
其它
获取成员数量:scard key
该键中是否有该值:sismember key value
有序集合操作
添加值
添加:zadd key score value score1 value1 ...
增量添加。如果该值存在则该score=score+增量值,不存在增量值为score值:
zincrby key increment value
获取值
查询成员排名,score从小到大排序:zrank key value
查询成员排名,score从大到小排序:zrevrank key value
索引取值,score从小到大排序(withscores带上后,会输出score):zrange key start stop [withscores]
索引取值,score从大到小排序(withscores带上后,会输出score):zrevrange key start stop [withscores]
分数范围取值,score从小到大排序:zrangebyscore key min max [withscores]
分数范围取值,score从大到小排序:zrevrangebyscore key min max [withscores]
删除值
删除:zrem key value value1 ...
索引删除:zremrangebyrank key start stop
分数删除:zremrangebyscore key min max
其它
键成员个数:zcard key
成员分数范围的个数:zcount key min max
散列操作
field:映射键
value:映射值
添加值
单值添加:hset key field value
多值添加:hmset key field value field value
值存在不添加,不存在添加:hsetnx key field value
获取值
单值获取:hget key field
多值获取:hmget key field field1 ...
该散列表所有键:hkeys key
该散列表所有值:hvals key
该散列表所有键和值:hgetall key
删除值
删除映射键:hdel key field field1 ...
增量与减量
增量(increment:需要增加的数,或要减的数):hincrby key field increment
例如:hincrby key field -1
其它
映射键是否存在:hexists key field
映射键个数:hlen key