Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
Redis端口:6379
异常快速 : Redis是非常快的,每秒可以执行大约110000设置操作,81000个/每秒的读取操作。
支持丰富的数据类型 : Redis支持最大多数开发人员已经知道如列表,集合,可排序集合,哈希等数据类型。
这使得在应用中很容易解决的各种问题,因为我们知道哪些问题处理使用哪种数据类型更好解决。
操作都是原子的 : 所有 Redis 的操作都是原子,从而确保当两个客户同时访问 Redis 服务器得到的是更新后的值(最新值)。
MultiUtility工具:Redis是一个多功能实用工具,可以在很多如:缓存,消息传递队列中使用(Redis原生支持发布/订阅),在应用程序中,如:Web应用程序会话,网站页面点击数等任何短暂的数据;
Redis应用场景:
因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
sudo apt-get update
sudo apt-get install redis-server
redis-cli
#设置
set key value 例: ( set name 'lucky' )
# 获取
get key 例: ( get name )
# key是唯一的,不能用同一个key 不然就会覆盖
查看过期时间
# -1 表示永久 -2 表示 不存在
ttl key 例: ( ttl name )
设置过期时间
# 给已经存在 key,设置过期时间
expire key seconds 例: ( expire name 20 )
# 设置 key的同时,设置过期时间
set key value ex seconds 例: ( set age 18 ex 20 )
或
setex key seconds value 例: ( setex sex 20 '男' )
追加
# 给已有的value,再添加新的值
# append key value
例
append name love
#get name
设置 / 获取 多个
#设置多个 string
mset key value key value..
例子
mset username 'lucky' password '123'
#获取多个
mget key key key ...
例
mget username password name
key 操作
# 查看所有的key
keys *
# 删除
del key 例: (del name)
# 查看key是否存在 ,存在返回 1, 不存在返回 0
exists key
# 查看key类型
type key
运算
set num 1 # 自动识别,字符串里面的 整数
# +1
incr key 例 (incr num)
# -1
decr key 例 (decr num)
# +整数
incrby key increment 例 (incrby num 50)
# -整数
decrby key increment 例 (decrby num 50)
设置
# lpush 左添加 (栈)
lpush key value #例 lpush my_list a b c d
#rpush 右添加 (队列)
rpush key value #例 rpush my_rlist a b c d
查看
# lrange key start stop
例 查看所有
lrange my_list 0 -1
获得list的元素个数
llen key #例 llen my_list
查看位于lidex 位置上的元素
lindex key index #例 lindex my_list 3
删除
lpop
删除左边第一个
lpop key #例 lpop my_list
rpop
删除右边第一个
rpop key #例 rpop my_list
lrem
删除指定
rpush test_list a a b b c d e a d f m c
#lrem key count value
#count > 0 从左往右 删除数量为count的value
例 : lrem test_list 2 a
#count = 0 删除所有的 value
例 : lrem test_list 0 a
#count < 0 从右往左 删除数量为count的value
例 : lrem test_list -1 b
设置
# hset key field value
例 user { name:lucky}
hset user name lucky
获取
# hget key field
例
hget user name
删除
# hdel key field
例
hdel user name
设置多个
#hmset key field value [field value]
例 user{name:lucky , age:18, sex:male }
hmset user name lucky age 18 sex male
获取多个
# hmget key field field
例
hmget user name age
获取全部field value
# hgetall key
例
hgetall user
获取所有的field
# hkeys key
例
hkeys user
获取所有的value
# hvals key
例
hvals user
获取field
的个数
# hlen key
例 hlen user
设置
# sadd key value [value] (唯一,无序)
例 sadd my_set m n b v c x z b
获取
# smembers key
例 smembers my_set
删除
srem
指定删除
# srem key member
例
srem my_set c
spop
随机删除
# spop key
例
spop my_set
移动一个集合的值到另一个集合
# smove oldkey newkey member
例
smove my_set my_set2 b
判断集合存在某个值
# sismember key value
例
sismember my_set2 b
交集
# sinter key1 key2 ..
例
sinter my_set my_set2
把 key1 key2的交集合并到newkey
# sinterstore newkey key1 key2
例
sinterstore new_set my_set my_set2
并集
# sunion key1 key2 ...
例
sunion my_set my_set2
把 key1 key2的并集合并到newkey
# sunionstore newkey key1 key2
例
sunionstore new_set2 my_set my_set2
差集
# sdiff key1 key2
sdiff my_set my_set2
把 key1 key2的差集合并到newkey
# sdiffstore newkey key1 key2
例
sdiffstore new_set3 my_set my_set2
获取集合个数
# scard key
例
scard my_set
随机返回一个
# srandmember key
例
srandmember my_set
设置
# zadd key score member
例
zadd my_zset 1 'one'
zadd my_zset 2 'two'
zadd my_zset 3 'three'
zadd my_zset 4 'four'
zadd my_zset 5 'five'
获取
zrange
正序
#zrange key start stop (withscores)
zrange my_zset 0 -1
zrevrange
倒序
#zrevrange key start stop
zrevrange my_zset 0 -1
删除
#zrem key member
zrem my_zset two
索引
zrank正序
# zrank key member
例
zrank my_zset three
zrevrank反序
# zrevrank key member
例
zrevrank my_zset three
zcard 查看有序集合元素数
# zcard key
例
zcard my_zset
zrangebyscore 返回集合中 score 在给定区间的元素
# zrange my_zset 0 -1 withscores
zrangebyscore my_zset 2 3 withscores
#返回了 score 在 2~3 区间的元素
zcount 返回集合中 score 在给定区间的数量
# zcount key min max
例
zcount my_zset 2 3
zscore : 查看score值
# zscore key member
例
zscore my_zset2 a
zremrangebyrank : 删除集合中排名在给定区间的元素
# zrange my_zset 0 -1 withscores
zremrangebyrank my_zset 1 3
zremrangebyscore : 删除集合中 score 在给定区间的元素
# zrange my_zset 0 -1 withscores
zremrangebyscore my_zset 1 2
以上只是Redis的一些基础知识,详细的可以参考:Redis更详细的讲解
安装Redis库:pip install redis
# 创建连接
re = redis.Redis(host='127.0.0.1', port='55555')
## 测试
re.set('num',15)
print(re.get('num'))
## set 中文
re.set('name','张三')
print(re.get('name').decode('utf8') )
### 大部分的命令 和 redis 中操作一样
不同:
re.ttl() ### 不能看 负数 -1 -2
re.mset() ## 用键值对
re.incr() ## incr 可以加参数,代替了 incrby
re.decr() ## decr 可以加参数,代替了 decrby
re.lrem() ## num 放到后面
re.hmset() # 多插入,用字典
#-*- coding:utf-8-*-
import redis
conn = redis.Redis(host='192.168.26.128', port='6379')
conn.set('name','小美')
#print(conn.get('name')) bytes:
print(conn.get('name').decode('utf-8'))
### 大部分的命令 和 redis 中操作一样
#不同:
conn.ttl('name') ### 不能看 负数 -1 -2
#原生设置多个字符串 mset k1 v1 k2 v2
conn.mset(name = 'lucky',age = 18)#区别,同时设置多个,用键值对
print(conn.get('read_count'))
# conn.decr() ## decr 可以加参数,代替了 decrby
conn.decr('read_count',amount=10)
# conn.incr() ## incr 可以加参数,代替了 incrby
conn.incr('read_count',amount=10)
print(conn.get('read_count'))
# conn.lrem() ## num 放到后面
conn.lrem('my_list',3,0)
# conn.hmset() # 多插入,用字典
#hset key xx xxx
#website = {'google':'www.google.com'} 相当于 conn.hset('website','google','www.google.com')
conn.hmset('website',{'baidu':'www.baidu.com','taobao':'www.taobao.com'})
print(conn.hgetall('website'))
conn.lrem('my_list',3,0) 原始列表
删除完:
七月的天,真的是要热死人~~~也好,早点起来学习也不错啊、