Redis
#Redis和Memcached统称为缓存
#Redis又被称为非关系型数据库
Memcached 是一个只使用内存的软件
特性:只能存储字符串类型
优点:是速度极其的快
缺点:计算机宕机,数据全部被去除
Redis 为什么能火起来? 免费
特性:以字符串类型为基础,衍生了很多其它类型
优点:可以使用内存(临时存储),也可以使用硬盘(永久存储)
缺点:速度相对于Memcached来说比较慢
#redis桌面图形
Redis Desktop Manager
#官网提供3个版本,win,Linux,MacOS
Linux中管理Redis
#我们使用oneinstack安装的redis
#默认路径
/usr/local/redis/etc
#在etc可以看见端口 6379
#配置远程链接
#参数 绑定某个地址,如果bind 127.0.0.1没有被注释,那么不能进行远程访问
bind 127.0.0.1 ::1
#参数 受保护的,默认值是yes
protected-mode no
#守护进程 改为yes,在后台运行
daemonize yes
#验证的密码
requirepass 密码
#当配置项修改完毕以后,需要重启
service redis-server restart|start|stop|status
#进入redis终端
redis-cli --raw
#需要验证是否连接通畅
ping
#如果返回(error) NOAUTH Authentication required.
auth 密码
#返回pong代表连接成功
#redis中一共有16个数据库,默认是0-15
#选择数据库
select 0 (默认)
#退出
exit|quit
1.String
String是redis中最基本的数据类型,最大可以存储512M(这个值是可以设置的)
String类型是二进制的,可以存储图片,存储数字,序列化....
1.设置键和值
set key value
#案例:存储一个邮箱
set email [email protected]
#在图形界面化有有一个TTL:-1(代表永久花存储)
2.设置带有过期时间的键和值
setex key seconds value
3.一次性设置多个键和值
mset key value [key value...]
1.获取一个值
get key
2.一次性获取多个
mget key [key...]
1.自加一
incr key
2.自减一
decr key
3.一次性加上一个数
incrby key intnum
4.一次性减去一个数
decrby key intnum
1.追加值(返回的是一个长度)
append key value
2.查看字符串的长度
strlen key
2.key
1.查找key,支持正则
keys 'pattern'
2.判读键是否存在,返回的是bool值
exists key
3.查看键对应值的类型
type key
4.删除键,返回bool值
del key [key...]
5.设置生命周期,-1是永久的,-2是过期
expire key seconds
6.查看过期时间长度
ttl key
3.hash
python的字典就是一个hash类型
hash象一个序列,但不是序列,在计算机中是一个特殊的存储结构,它的特性是键值对,hash是一个整体
1.设置单个值
hset key field value
2.设置多个值
hmset key field value [field value ...]
1.获取一个值
hget key field
2.获取多个值
hmget key field [field...]
3.获取所有的键和值
hgetall key
4.获取所有的字段|属性
hkeys key
5.获取所有的值
hvals key
6.返回包含元素的长度
hlen key
1.判断某个字段或者属性存不存在
hexists key field
2.删除属性
hdel key field
3.返回某一个属性的长度
hstrlen key field
4.list
链表:按照一定的顺序进行排序
1.从头部插入
lpush key values
2.从尾部插入
rpush key values
3.在指定的位置进行插入
linsert key after|before pivot value
4.设置指定的索引的值
lset key index value
#list的索引从0开始,-1代表最后一个位置
#选择范围
lrange key start end
#弹出以后的数据,就被删除了
lpop key
rpop key
1.裁剪链表
ltrim key start end
2.查看链表的长度
llen key
3.返回指定索引位置的值
lindex key index
5.set
set:无序集合,集合的值是唯一的
#添加元素
sadd key member [member...]
#获取所有的元素
smembers key
#返回集合元素的个数
scard key
1.求多个集合的交集
sinter key key [key...]
2.求多个集合的差集,返回左边集合的差集
sdiff key key [key...]
3.求多个集合的并集
sunion key key [key...]
4.判断元素是否在集合中,返回的是bool值
sismember key member
6.zset
zset:有序集合,
特性:
1.可以进行排序,权重(score)排序法
2.元素不能重复
#添加值
zadd key score member
1.返回指定范围
zrange key start end
2.返回zset的元素长度
zcard key
3.返回权重大小之间的值的元素个数
zcount key min max
4.返回某个元素的权重
zscore key member
7.python-redis
pip install redis
import redis
#连接远程的redis服务器
conn = redis.Redis(host='10.11.58.103',port=6379,db=0,decode_responses=True,password='123456')
# #设置一个string
conn.set('name','tom')
#获取值
print(conn.get('name'))
import redis
#创建一个连接池
#每次都会进行链接,避免做重复的建立和释放,我们使用连接池自动管理
#redis会产生多少个实例,让多个实例共享一个连接池
pool = redis.ConnectionPool(host='10.11.58.103',password='123456',port=6379,decode_responses=True,db=0)
#实例化redis
res = redis.Redis(connection_pool=pool)
res.hmset('abc',{'a':1,'b':2})