安装
自动安装
- 执行安装命令
sudo apt-get update
sudo apt-get install redis-server
- 启动 Redis
redis-server
- 在新开终端窗口,查看 redis 是否启动?
redis-cli
以上命令将打开以下终端:
redis 127.0.0.1:6379>
127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。
redis 127.0.0.1:6379> ping
PONG
以上说明我们已经成功安装了redis。
源码安装
- 1.下载地址
- 2.解压后进行编译
cd redis-4.0.9
make
- 3.启动redis
./src/redis-server redis.conf
Docker安装
docker run --restart=always -d -p 6379:6379 -v ~/data/redis:/data --name redis redis
- 安装Redis WebUI
docker run -d -p 12345:8081 -e REDIS_HOSTS=local:redis:6379 -e TRUST_PROXY=true --link redis:redis --name redis-commander rediscommander/redis-commander
设置密码
修改配置文件
Redis的配置文件默认在 /etc/redis.conf
(MacOSX /usr/local/etc/redis.conf
),找到如下行:
#requirepass foobared
去掉前面的注释,并修改为所需要的密码:
requirepass myPassword
重启Redis
如果Redis已经配置为service服务,可以通过以下方式重启:
service redis restart
如果Redis没有配置为service服务,可以通过以下方式重启:
/usr/local/bin/redis-cli shutdown
/usr/local/bin/redis-server /etc/redis.conf
登录验证
设置Redis认证密码后,客户端登录时需要使用-a参数输入认证密码,不添加该参数虽然也可以登录成功,但是没有任何操作权限。如下:
./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
使用密码认证登录,并验证操作权限:
./redis-cli -h 127.0.0.1 -p 6379 -a myPassword
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "myPassword"
看到类似上面的输出,说明Reids密码认证配置成功。
除了按上面的方式在登录时,使用-a参数输入登录密码外。也可以不指定,在连接后进行验证:
./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> auth myPassword
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "myPassword"
127.0.0.1:6379>
在命令行客户端配置密码
前面介绍了通过redis.conf配置密码,这种配置方式需要重新启动Redis。也可以通命令行客户端配置密码,这种配置方式不用重新启动Redis。配置方式如下:
127.0.0.1:6379> config set requirepass newPassword
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "newPassword"
注意:使用命令行客户端配置密码,重启Redis后仍然会使用redis.conf配置文件中的密码.
在Redis集群中使用认证密码
如果Redis服务器,使用了集群。除了在master中配置密码外,也需要在slave中进行相应配置。在slave的配置文件中找到如下行,去掉注释并修改与master相同的密码即可:
# masterauth master-password
查询数据存储路径
redis-cli config get dir
常用命令
功能 | 命令 |
---|---|
查看所有redis key | keys * |
查找所有符合给定模式( pattern)的 key | keys pattern,如 keys test* |
删除key | DEL key |
查询Redis所有配置 | config get * |
查询日志级别 | config get loglevel |
设置Key | set key value [expiration EX seconds|PX milliseconds] [NX|XX], 如 set test 1234 |
查询字符串类型Key中的值 | get key, 如 get test |
查询集合类型Key中的值 | smembers key, 如 smembers test |
查询有序集合类型Key中的值 | zrangebyscore key min max, 如 zrangebyscore test 1 3 |
查询哈希类型Key中的值 | hgetall key, 如 hgetall test |
查询数组类型Key中的值 | lrange key start end, 如 lrange test 0 1 |
删除Key | del key, 如 del test |
检查Key是否存在 | exists key, 如 exists test |
序列化指定的key | dump key, 如 dump test |
设置 key 的过期时间(单位是 秒) | expire key, 如 expire test 10 |
设置 key 的过期时间(时间参数是 UNIX 时间戳) | expireat key time_in_unix_timestamp, 如 expireat test 1558495855 |
设置 key 的过期时间以毫秒计 | pexpire key milliseconds, 如 pexpire test 1500 |
设置 key 过期时间的时间戳(unix timestamp) 以毫秒计 | pexpireat key time_in_milliseconds_in_unix_timestamp, 如 pexpireat test 1558495855 |
将当前数据库的 key 移动到给定的数据库 db 当中 | move key destination_database,如 move test 1 |
移除key的过期时间,key讲持久保存 | persist key, 如 persist test |
以毫秒为单位返回 key 的剩余的过期时间 | pttl key, 如 pttl test 当 key 不存在时,返回 -2 当 key 存在但没有设置剩余生存时间时,返回 -1 否则,以毫秒为单位,返回 key 的剩余生存时间 |
以秒为单位,返回给定 key 的剩余生存时间 | ttl key, 如 ttl test 当 key 不存在时,返回 -2 当 key 存在但没有设置剩余生存时间时,返回 -1 否则,以秒为单位,返回 key 的剩余生存时间 |
从当前数据库中随机返回一个 key | randomkey |
同时设置多个key | mset key1 value1 key2 value2, 如 mset test1 1 test2 2 test3 3 |
删除当前数据库所有 key | flushdb |
删除所有数据库 key | flushall |
修改 key 的名称 | rname old_key new_key 当 OLD_KEY_NAME 和 NEW_KEY_NAME 相同,或者 OLD_KEY_NAME 不存在时,返回一个错误 当 NEW_KEY_NAME 已经存在时, RENAME 命令将覆盖旧值 |
返回 key 所储存的值的类型 | type key, 如 type test, 数据类型有 none (key不存在) string (字符串) list (列表) set (集合) zset (有序集) hash (哈希表) |
切换数据库 | select index, 如 select 1 |
批量删除key
EVAL "return redis.call('del', unpack(redis.call('keys', ARGV[1])))" 0 <key pattern>
非交互式命令
# 查询 -n 指定db
redis-cli -n 1 get xxxxxxx
# 查询指定key
redis-cli -n 1 --scan --pattern 'session*'
python中清空redis所有数据
r = redis.Redis(host='localhost',port=6379,db=0)
r.flushdb() #清空r中的所有数据
常见报错
- redis设置了密码
Exception Type: ResponseError
Exception Value:operation not permitted