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