string

  • string是redis最基本的类型
  • 最大能存储512MB数据
  • string类型是二进制安全的,可以存储任何数据,比如数字、图片等

增加、修改

  • 如果设置的键不存在则为添加,如果设置的键已经存在则修改
  • 设置键值
set key value

  

  • 例1:设置键为'py1'值为'gj'的数据
set 'py1' 'gj'

  

  • 设置键值及过期时间,以秒为单位
setex key seconds value

  

  • 例2:设置键为'py2'值为'hr'过期时间为3秒的数据
setex 'py2' 3 'hr'

  

  • 设置多个键值
mset key1 value1 key2 value2 ...

  

  • 例3:设置键为'py3'值为'dx'、键为'py4'值为'xd'、键为'py5'值为'nd'、键为'py6'值为'bg'的数据
mset 'py3' 'dx' 'py4' 'xd' 'py5' 'nd' 'py6' 'bg'

  

  • 追加值
append key value

  

  • 例4:向键为py1中追加值' haha'
append 'py1' ' haha'

  

获取

  • 获取:根据键获取值,如果不存在此键则返回nil
get key

  

  • 例5:获取键'py1'的值
get 'py1'

  

  • 根据多个键获取多个值
mget key1 key2 ...

  

  • 例6:获取键'py3'、'py4'、'py5'、'py6'的值
mget 'py3' 'py4' 'py5' 'py6'

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)

------------------------------ string -----------------------------------------------

1.SET 命令用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。

print(conn.set('123', '123'))  # 插入成功后返回True
print(conn.set('123', '[123,dffd]'))  # 插入成功后返回True

2. Get 命令用于获取指定 key 的值。如果 key 不存在,返回 None 。如果key 储存的值不是字符串类型,返回一个错误。

print(conn.get('123'))  # 返回的结果是[123,dffd]
print(conn.get('1234'))  # 返回的结果是 None

3. Getrange 命令用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内))。

print(conn.set('getrange', 'wo shi hao ren '))
print(conn.getrange('getrange', 2, 4))  # 返回的结果是sh
print(conn.getrange('getrange', 2, 6))  # 返回的结果是shi
print(conn.getrange('getrange', 2, 10))  # 返回的结果是shi hao

4.Getset 命令用于设置指定 key 的值,并返回 key 旧的值,当 key 存在但不是字符串类型时,返回一个错误。

print(conn.getset('getrange', 'hello word'))  # 返回的结果是wo shi hao ren
print(conn.getset('getrange11', 'hello word'))  # 当键不存在的时候,返回的结果是None

5.Getbit 命令用于对 key 所储存的字符串值,获取指定偏移量上的位(bit))字符串值指定偏移量上的位(bit))。当偏移量 getrange 比字符串值的长度大,或者 key 不存在时,返回 0。

print(conn.get('getrange'))  # 返回的结果是    hello word
print(conn.getbit('getrange', 1))  # 返回的结果是    1
print(conn.getbit('getrange', 3))  # 返回的结果是    0
print(conn.getbit('getr22222ange', 3))  # 字符串的键不存在的时候返回的结果是    0
print(conn.getbit('getrange', 300))  # 偏移量超过字符串长度,返回的结果是  0

6.Mget 命令返回所有(一个或多个))给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 None

print(conn.set('1', '1'))  # 返回的结果是    True
print(conn.set('11', '11'))  # 返回的结果是   True
print(conn.set('111', '111'))  # 返回的结果是  True
print(conn.mget('1', '11', '111'))  # 返回的结果是    ['1', '11', '111']
print(conn.mget('1', '11', '222222'))  # 因为键222222不存在,返回的结果是   ['1', '11', None]

7.Setbit 命令用于对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit))。

print(conn.get('getrange'))  # 返回的结果是    hello word
print(conn.setbit('getrange', 4, 10086))  # 返回的结果是    1
print(conn.getbit('getrange', 10086))  # 返回的结果是    0
print(conn.setbit('getrange', 5, 100861))  # 返回的结果是    0
print(conn.getbit('getrange', 100861))  # 返回的结果是    0

8.Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。

print(conn.setex('1', '123', 10))  # 返回的结果是    True
import time
time.sleep(5)
print(conn.ttl('1'))  # 返回的结果是    4
print(conn.get('1'))  # 返回的结果是    123
time.sleep(6)
print(conn.get('1'))  # 返回的结果是    None

9.Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。设置成功,返回 1 。 设置失败,返回 0 。

print(conn.exists('22'))  # 返回的结果是    False
print(conn.setnx('22', '2222222'))  # 返回的结果是    True
print(conn.setnx('22', '123456'))  # 返回的结果是    False
print(conn.get('22'))  # 返回的结果是    2222222

10.Setrange 命令用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始。

print(conn.set('11', 'hello world'))  # 返回的结果是    True
print(conn.setrange('11', 6, "redis"))  # 返回的结果是    11
print(conn.get('11'))  # 返回的结果是    hello redis

11.Strlen 命令用于获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。

print(conn.get('11'))  # 返回的结果是    hello redis
print(conn.strlen('11'))  # 返回的结果是   11
print(conn.strlen('121'))  # 当key不存在的时候,返回的结果是   0

12.Mset 命令用于同时设置一个或多个 key-value 对。

# 第一种方法
print(conn.mset(name1="1", name2='2'))  # 返回的结果是   True
# 第二种方法
print(conn.mset({"name3": '3', "name4": '4'}))  # 返回的结果是   True
print(conn.get('name1'))  # 返回的结果是   1
print(conn.get('name2'))  # 返回的结果是   2
print(conn.get('name3'))  # 返回的结果是   3
print(conn.get('name4'))  # 返回的结果是   4

13. Msetnx 命令用于所有给定 key 都不存在时,同时设置一个或多个 key-value 对。当所有 key 都成功设置,返回 1 。 如果所有给定 key 都设置失败(至少有一个 key 已经存在)),那么返回 0 。

print(conn.msetnx(name5="5", name6='6'))  # 返回的结果是  True
print(conn.msetnx(name5="55", name7='7'))  # 返回的结果是   False
print(conn.get('name5'))  # 返回的结果是   5
print(conn.get('name6'))  # 返回的结果是   6
print(conn.get('name7'))  # 返回的结果是  None

14. Psetex 命令以毫秒为单位设置 key 的生存时间。主意:SETEX 命令那样,以秒为单位。

print(conn.psetex('name8', 1000, "nihao"))  # 返回的结果是   True
print(conn.pttl('name8'))  # 返回的结果是  690
print(conn.get('name8'))  # 返回的结果是   nihao   时间过期后返回的是  None

15.Incr 命令将 key 中储存的数字值增一如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在 64 位(bit))有符号数字表示之内。

print(conn.set('11', 20))  # 返回的结果是  True
print(conn.incr('11'))  # 返回的结果是  21
print(conn.get('11'))  # 返回的结果是  21
print(conn.incr('11', amount=2))  # 返回的结果是  23
print(conn.get('11'))  # 返回的结果是  23
print(conn.incr('21', amount=2))  # 返回的结果是  2
print(conn.incr('22'))  # 返回的结果是  1

16.Redis Incrby 命令将 key 中储存的数字加上指定的增量值。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

print(conn.set("13", 13))  # 返回的结果是  True
print(conn.incrby('13', 12))  # 返回的结果是  25
print(conn.incrby('15', 12))  # 返回的结果是  12
print(conn.incrby('15', 12))  # 返回的结果是  24

17.Redis Incrbyfloat 命令为 key 中所储存的值加上指定的浮点数增量值。如果 key 不存在,那么 INCRBYFLOAT 会先将 key 的值设为 0 ,再执行加法操作。

print(conn.set('1', 1.1))  # 返回的结果是  True
print(conn.incrbyfloat('1', 2.32))  # 返回的结果是  3.42
print(conn.get('1'))  # 返回的结果是  3.42
print(conn.incrbyfloat('1', amount=1.2))  # 返回的结果是  4.62

18.Redis Decr 命令将 key 中储存的数字值减一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在 64 位(bit))有符号数字表示之内。

print(conn.decr('22'))  # 如果 key  22 不存在,返回的结果是  -1
print(conn.set('bb', 20))  # 返回的结果是 True
print(conn.decr('bb', amount=2))  # 返回的结果是  18
print(conn.decr('cc'))  # 返回的结果是  -1

19. Redis Append 命令用于为指定的 key 追加值。如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。

print(conn.set("11", 12))  # 返回的结果是 True
print(conn.append('11', 12))  # 返回的结果是 4
print(conn.append('11', 1))  # 返回的结果是 5
print(conn.append('11', 2))  # 返回的结果是 6
print(conn.get('11'))  # 返回的结果是 121212
print(conn.exists('14'))  # 返回的结果是 False
print(conn.append('14', 'hello world'))  # 返回的结果是 11
print(conn.get('14'))  # 返回的结果是 hello world