redis相关操作

| 分类 插件  | 标签 redis  浏览次数: -

安装

自动安装

  • 执行安装命令
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。

源码安装

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

参考


上一篇 Python调用C程序     下一篇 sphinx编写文档
目录导航