程序下载 http://down.51cto.com/data/2440789:
点击客户端进行连接测试, 出现下图说明测试成功
语法:
redis 的字符串操作
set(key,value,ex=None,px=None,nx=False,xx=False)
在 redis 中设置值, 默认, 不存在则创建, 存在则修改
参数:
ex: 过期时间(秒)
px: 过期时间(毫秒)
nx: 如果设置为 True, 则只有 key 不存在时当前 set 才会执行
xx: 如果设置为 True, 则只有 key 存在时, 当前 set 才会执行
setnx(key,value)
设置值, 只有 key 不存在时, 执行设置操作
setex(key,value,time)
设置值
参数:
time: 过期时间单位是秒
psetex(key,value,time)
设置值
参数:
time: 过期时间单位是毫秒
mset(*args,**kwargs)
批量设置值
如:
mset k1 v1 k2 v2
或者 mset(k1='v1',k2='v2')
getset(key,value)
设置新值并返回原来的值
getrange(key,start,end)
获取子序列(根据字节获取, 非字符)
参数:
key: redis 的 key
start: 起始位置(字节)
end: 结束位置(字节)
如: 张三, 0-3 表示张
setrange(key,offset,value)
修改字符串内容从指定字符串索引开始向后替换(新值太长时, 则向后添加)
参数:
offset: 字符串的索引, 字节(一个汉字三个字节)
value: 要设置的值
setbit(key,offset,value)
对 key 对应的二进制表示的位进行操作
参数:
key: redis 的 key
offset: 位的索引(将值变为二进制后再进行索引)
value: 值只能是 0 或 1
例:
如果在 redis 中有一个对应: n1 = "foo"
那么字符串 foo 的二进制表示为: 01100110 01101111 01101111
如果执行 setbit('n1',7,1)则就会将第七位设置为 1
那么最终二进制则变成 01100111 01101111 01101111 即 goo
代码实现
- 127.0.0.1:6379> set n1 foo
- OK
- 127.0.0.1:6379> setbit n1 7 1
- (integer) 0
- 127.0.0.1:6379> get n1
- "goo"
- 127.0.0.1:6379>
用处:
如 QQ 统计在线人数, 并且看谁在线:
让 1 代表在线 0 代表不在线
offset 代表用户对应的 ID
如果用户上线, 则将该 ID 设置为 1
用 bitcount 统计有多少个 1, 即有多少用户在线
用 getbit 查看用户是否在线
代码实现:
- 127.0.0.1:6379> setbit QQ 55 1
- (integer) 0
- 127.0.0.1:6379> setbit QQ 1000 1
- (integer) 0
- 127.0.0.1:6379> bitcount QQ
- (integer) 2
- 127.0.0.1:6379> getbit QQ 55
- (integer) 1
- 127.0.0.1:6379> getbit QQ 66
- (integer) 0
- 127.0.0.1:6379>
- append(key,value)
在 redis,key 对应的值后追加
参数:
key: redis 的 key
value: 要追加的字符串
例子:
- 127.0.0.1:6379> get zhang
- "san"
- 127.0.0.1:6379> append zhang san
- (integer) 6
- 127.0.0.1:6379> get zhang
- "sansan"
- 127.0.0.1:6379>
- del key
删除 key
hash
如果需要存一个班级的姓名等信息
- 127.0.0.1:6379> hset info key duwentao
- (integer) 1
- 127.0.0.1:6379> hset info age 20
- (integer) 1
- 127.0.0.1:6379> hset info id 1
- (integer) 1
- 127.0.0.1:6379> hgetall info
- 1) "key"
- 2) "duwentao"
- 3) "age"
- 4) "20"
- 5) "id"
- 6) "1"
- 127.0.0.1:6379> hget info age
- "20"
- 127.0.0.1:6379> hkeys info # 查看有多少 key
- 1) "key"
- 2) "age"
- 3) "id"
- 127.0.0.1:6379> hvals info # 查看有多少 value
- 1) "duwentao"
- 2) "20"
- 3) "1"
- hmset key field value [field value ...]
用法:
- 127.0.0.1:6379> hmset li k1 v1 k2 v2 k3 v3
- OK
- 127.0.0.1:6379> hgetall li
- 1) "k1"
- 2) "v1"
- 3) "k2"
- 4) "v2"
- 5) "k3"
- 6) "v3"
- hget key field
在 key 对应的 hash 中获取根据 key 获取 value
hmget key field [field ...]
用法:
- 127.0.0.1:6379> hmget li k1 k2
- 1) "v1"
- 2) "v2"
- hlen(key)
获取有几个 key
hkeys(key)
获取 key 对应的 hash 中所有 key 的值
hvals(key)
获取 key 对应的 hash 中所有的 value 值
hexists key field
检查 key 对应的 hash 是否存在当前传入的 key
hincrby key field increment
自增加
- 127.0.0.1:6379> hincrby info age 1
- (integer) 21
- 127.0.0.1:6379> hincrby info age 1
- (integer) 22
- hscan key cursor [MATCH pattern] [COUNT count]
起到一个过滤的作用
如 hscan info 0 match *a*
列表:
lpush(从左边放)和 rpush(从右边放)
- 127.0.0.1:6379> lpush keys1 zhangsan lisi wanger
- (integer) 3
- 127.0.0.1:6379> LRANGE keys1 0 -1
- 1) "wanger"
- 2) "lisi"
- 3) "zhangsan"
- 127.0.0.1:6379> RPUSH keys2 zhangsan lizi wanger
- (integer) 3
- 127.0.0.1:6379> LRANGE keys2 0 -1
- 1) "zhangsan"
- 2) "lizi"
- 3) "wanger"
- 127.0.0.1:6379>
- lpushx key value
在 key 对应的 list 中添加元素, 只对 key 已经存在时, 值添加到列表的最左边
rpushx key value
在 key 对应的 list 中添加元素, 只对 key 已经存在时, 值添加到列表的最右边
llen key
key 对应的 list 元素个数
LINSERT key BEFORE|AFTER pivot value
在 key 对应的列表的某一个值前或后插入一个新值
参数:
key: redis 的 key
BEFORE|AFTER: 在什么或者后
privot: 标杆值, 即在他前后插入数据
value: 要插入的数据
lset key index value
对 key 对应的 list 中的某一个索引位置进行重新赋值
参数:
key: redis 的 key 值
index:list 的索引位置
value: 要设置的值
lrem key count value
在 key 对应的 list 中删除指定的值
参数:
key:redis 的 key
value: 要删除的值
count:
count=0: 删除列表中所有的指定的值
count=2: 从前向后, 删除两个
count=-2: 从后向前, 删除两个
lpop key
在 key 对应的列表的左侧获取第一个元素并在列表中删除, 返回值则是第一个元素
lindex key index
在 key 中对应的列表中根据索引获取列表元素
LRANGE key start stop
在 key 对应的列表分片获取数据
参数:
key: redis 的 key
start: 索引的起始位置
end: 索引的结束位置
LTRIM key start stop
在 key 对应的列表中移除没有在 start stop 索引之间的值
参数:
key:redis 的 key
start: 索引的起始位置
stop: 索引的结束位置
RPOPLPUSH source destination
从一个表中取出最右边的元素, 同时将其添加至另一个列表的最左边
参数:
source: 要取出数据的列表的 key
destination: 要添加数据的列表的 key
BRPOPLPUSH source destination timeout
从一个列表的右侧移除一个元素并将其添加到另一个列表的左侧
参数:
source: 取出并移除元素的列表对应的 key
destination: 要插入元素的列表对应的 key
timeout: 当 source 对应的列表中没有数据时, 阻塞等待其数据的超时时间(秒),0 表示永远堵塞
集合:
sadd key member [member ...]
key 对应的集合中添加元素(无重复, 无序)
如:
- 127.0.0.1:6379> sadd names3 zhangsan zhangsan lisi lisi 3 3
- (integer) 3
- 127.0.0.1:6379> SMEMBERS names3 # 获取所有值
- 1) "3"
- 2) "lisi"
- 3) "zhangsan"
- scard key
获取 key 对应的集合中的元素个数
sdiff key [key ...]
在第一个 key 对应的集合中且不在其他 key 对应的集合中的元素
sdiffstore destination key [key ...]
在第一个 key 对应的集合中且不在其他 key 对应的集合中的元素, 把他添加到 destination 里
SINTER key1 [key2]
返回给定所有集合的交集
SINTERSTORE destination key1 [key2]
返回给定所有集合的交集并存储在 destination 中
SISMEMBER key member
判断 member 元素是否是集合 key 的成员
SMEMBERS key
返回集合中的所有成员
SMOVE source destination member
将 member 元素从 source 集合移动到 destination 集合
SPOP key
移除并返回集合中的一个随机元素
SRANDMEMBER key [count]
返回集合中一个或多个随机数
SREM key member1 [member2]
移除集合中一个或多个成员
SUNION key1 [key2]
返回所有给定集合的并集
SUNIONSTORE destination key1 [key2]
所有给定集合的并集存储在 destination 集合中
SSCAN key cursor [MATCH pattern] [COUNT count]
迭代集合中的元素
有序集合:
ZADD key score1 member1 [score2 member2]
向有序集合添加一个或多个成员, 或者更新已存在成员的分数
ZCARD key
获取有序集合的成员数
ZCOUNT key min max
计算在有序集合中指定区间分数的成员数
ZINCRBY key increment member
有序集合中对指定成员的分数加上增量 increment
ZINTERSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
ZLEXCOUNT key min max
在有序集合中计算指定字典区间内成员数量
ZRANGE key start stop [WITHSCORES]
通过索引区间返回有序集合成指定区间内的成员
ZRANGEBYLEX key min max [LIMIT offset count]
通过字典区间返回有序集合的成员
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
通过分数返回有序集合指定区间内的成员
ZRANK key member
返回有序集合中指定成员的索引
ZREM key member [member ...]
移除有序集合中的一个或多个成员
ZREMRANGEBYLEX key min max
移除有序集合中给定的字典区间的所有成员
ZREMRANGEBYRANK key start stop
移除有序集合中给定的排名区间的所有成员
ZREMRANGEBYSCORE key min max
移除有序集合中给定的分数区间的所有成员
ZREVRANGE key start stop [WITHSCORES]
返回有序集中指定区间内的成员, 通过索引, 分数从高到底
ZREVRANGEBYSCORE key max min [WITHSCORES]
返回有序集中指定分数区间内的成员, 分数从高到低排序
ZREVRANK key member
返回有序集合中指定成员的排名, 有序集成员按分数值递减 (从大到小) 排序
ZSCORE key member
返回有序集中, 成员的分数值
ZUNIONSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的并集, 并存储在新的 key 中
ZSCAN key cursor [MATCH pattern] [COUNT count]
迭代有序集合中的元素(包括元素成员和元素分值)
安装 python 模块
pip3 install redis
Python 线程池连接 redis
普通连接 redis
管道: 一次可以执行多个命令
- import redis
- pool = redis.ConnectionPool(host='127.0.0.1',port=6379) # 连接池
- #r = redis.Redis(host='127.0.0.1',port=6379)
- r = redis.Redis(connection_pool=pool)
- pipe = r.pipeline(transaction=True)
- r.set('foo','bar')
- r.set('zhangsan','heheheh')
- pipe.execute()
来源: http://www.bubuko.com/infodetail-2506714.html