键命令

  • 查找键,参数支持正则表达式
keys pattern

  

  • 例1:查看所有键
keys *

  

  • 例2:查看名称中包含a的键
keys '*a*'

  

  • 判断键是否存在,如果存在返回1,不存在返回0
exists key1

  

  • 例3:判断键'py1'、'py2'是否存在
exists 'py1'
exists 'py2'

  

  • 查看键对应的value的类型
type key

  

  • 例4:查看键'py1'的值类型,为redis支持的五种类型中的一种
type 'py1'

  

  • 删除键及对应的值
del key1 key2 ...

  

  • 例5:删除键'py3'、'py4'、'py5'、'py6'
del 'py3' 'py4' 'py5' 'py6'

  

  • 设置过期时间,以秒为单位
  • 如果没有指定过期时间则一直存在,直到使用DEL移除
expire key seconds

  

  • 例6:设置键'py1'的过期时间为10秒
expire 'py1' 10

  

  • 查看有效时间,以秒为单位
ttl key

  

  • 例7:查看键'py2'的有效时间
ttl 'py2'

redis操作

import redis
from redis import ConnectionPool, StrictRedis

REDIS_HOST = "10.133.3.26"
REDIS_POST = 6379
REDIS_DATABASE = 3
REDIS_PASSWORD = ''

conn = redis.Redis(host=REDIS_HOST, port=REDIS_POST, password=REDIS_PASSWORD, db=REDIS_DATABASE)
pool = ConnectionPool(host=REDIS_HOST, port=REDIS_POST, db=REDIS_DATABASE, password=REDIS_PASSWORD)
conn = StrictRedis(connection_pool=pool)

-------------------------------- key -----------------------------------------------

1. delete DEL 命令用于删除已存在的键。不存在的 key 会被忽略

print(conn.set('1', '4028b2883d3f5a8b013d57228d760a93'))  # set 设置指定 key 的值, 如果设置正确返回 True
print(conn.get('1'))  # 得到 键为1 的值    4028b2883d3f5a8b013d57228d760a93
print(conn.delete('1'))  # 删除 键为1 的值
print(conn.get('1'))  # 因为上面已经把键为1 的值删除掉,所以返回的是None

2. exists

# 设定键为2的值是  4028b2883d3f5a8b013d57228d760a93
conn.set('2', '4028b2883d3f5a8b013d57228d760a93')
# 存在就返回True 不存在就返回False
print(conn.exists('2'))  # 返回True
print(conn.exists('33'))  # 返回False

3. Expire 命令用于设置 key 的过期时间。key 过期后将不再可用。

conn.set('2', '4028b2883d3f5a8b013d57228d760a93')
# 成功就返回True 失败就返回False,下面的20表示是20秒
print(conn.expire('2', 20))
# 如果时间没事失效我们能得到键为2的值,否者是None
print(conn.get('2'))

4.Expireat 命令用于以 UNIX 时间戳(unix timestamp))格式设置 key 的过期时间。key 过期后将不再可用。主意:时间精确到秒,时间戳是10为数字

conn.set('2', '4028b2883d3f5a8b013d57228d760a93')
# 成功就返回True 失败就返回False,下面的1598033936表示是在2020-08-22 02:18:56 键2 过期
print(conn.expireat('2', 1598033936))
print(conn.get('2'))

5.PEXPIREAT 命令用于设置 key 的过期时间,已毫秒技。key 过期后将不再可用。主意:时间精确到毫秒,时间戳是13位数字

conn.set('2', '4028b2883d3f5a8b013d57228d760a93')
# 成功就返回True 失败就返回False。
print(conn.expireat('2', 1598033936000))
print(conn.get('2'))

6. Keys 命令用于查找所有符合给定模式 pattern 的 key 。

print(conn.set('111', '11'))
print(conn.set('122', '12'))
print(conn.set('113', '13'))
print(conn.keys(pattern='11*'))
# 输出的结果是 ['113', '111'] 因为键122不和 11* 匹配

7. MOVE 命令用于将当前数据库的 key 移动到给定的数据库 db 当中,select可以设定当前的数据库,如有需要请看select命令因为我们默认使用的数据库是db0,我们可以使用下面的命令键 2 移动到数据库 1 中去

conn.move(2, 1)

8. PERSIST 命令用于移除给定 key 的过期时间,使得 key 永不过期

# 设定键为 1 的值为11
print(conn.set('1', '11'))
# 设定键 1 过期时间为100秒
print(conn.expire(1, 100))
# 查看键 1 的过期时间还剩下多少
print(conn.ttl('1'))
# 目的是13秒后移除键 1 的过期时间
import time
time.sleep(3)
# 查看键 1 的过期时间还剩下多少
print(conn.ttl('1'))
# 移除键 1 的过期时间
conn.persist(1)
# 查看键 1 的过期时间还剩下多少  输出的结果是 None,我们可以通过redis desktop manager 查看键 1 的过期时间
print(conn.ttl('1'))

9.Pttl 命令以毫秒为单位返回 key 的剩余过期时间。

# 当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以毫秒为单位,返回 key 的剩余生存时间。
# 设定键为 1 的值为11
print(conn.set('1', '11'))
# 设定键 1 过期时间为100秒
print(conn.expire(1, 100))
import time
time.sleep(3)
# 返回的结果是 96994 ,运行的结果不是固定的,大于是97秒钟,主意是为了展示出返回的结果是毫秒,一秒等于1000毫秒
print(conn.pttl('1'))

10.TTL 命令以秒为单位返回 key 的剩余过期时间。

# 当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以毫秒为单位,返回 key 的剩余生存时间。
# 设定键为 1 的值为11
print(conn.set('1', '11'))
print(conn.expire(1, 100))  # 设定键 1 过期时间为100秒
import time
time.sleep(3)
print(conn.ttl('1'))  # 返回的结果是 97
print(conn.ttl('123'))  # 因为键 123 不存在  所以返回的结果是None

11.RANDOMKEY 命令从当前数据库中随机返回一个 key。当数据库不为空时,返回一个 key 。 当数据库为空时,返回 nil 。

print(conn.randomkey())  # 数据库返回的是默认的数据库 key

12 .Rename 命令用于修改 key 的名称 。改名成功时提示 OK ,失败时候返回一个错误。

print(conn.rename(1, 1111))  # 修改成功返回 True
print(conn.rename(222, 1111))  # 如果key 不存在 修改失败返回 redis.exceptions.ResponseError: no such key

13. Renamenx 命令用于在新的 key 不存在时修改 key 的名称 。

print(conn.exists(123123))  # 返回false
print(conn.renamenx(1111, 123123))  # 成功返回True
print(conn.renamenx(1111, 123123))  # 失败返回    redis.exceptions.ResponseError: no such key

14. Type 命令用于返回 key 所储存的值的类型

# 返回 key 的数据类型,数据类型有:none (key不存在)),string (字符串)),list (列表)),set (集合)),zset (有序集)),hash (哈希表)),
print(conn.set('1', "111111111"))
print(conn.type('1'))  # 返回的结果是string
print(conn.sadd('2', '222222222222'))
print(conn.type('2'))  # 返回的结果是set
print(conn.lpush('3', '33333333'))
print(conn.type('3'))  # 返回的结果是list