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 88888@qq.com
#在图形界面化有有一个TTL:-1(代表永久花存储)2.设置带有过期时间的键和值
setex key seconds value3.一次性设置多个键和值
mset key value [key value…] -
获取
1.获取一个值
get key2.一次性获取多个
mget key [key…] -
运算
1.自加一
incr key2.自减一
decr key3.一次性加上一个数
incrby key intnum4.一次性减去一个数
decrby key intnum -
常数字符串
1.追加值(返回的是一个长度)
append key value2.查看字符串的长度
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 value2.设置多个值
hmset key field value [field value …] -
获取
1.获取一个值
hget key field2.获取多个值
hmget key field [field…]3.获取所有的键和值
hgetall key4.获取所有的字段|属性
hkeys key5.获取所有的值
hvals key6.返回包含元素的长度
hlen key -
其它
1.判断某个字段或者属性存不存在
hexists key field2.删除属性
hdel key field3.返回某一个属性的长度
hstrlen key field
4.list
链表:按照一定的顺序进行排序
-
设置
1.从头部插入
lpush key values2.从尾部插入
rpush key values3.在指定的位置进行插入
linsert key after|before pivot value4.设置指定的索引的值
lset key index value
#list的索引从0开始,-1代表最后一个位置 -
获取
#选择范围
lrange key start end#弹出以后的数据,就被删除了
lpop key
rpop key -
其它
1.裁剪链表
ltrim key start end2.查看链表的长度
llen key3.返回指定索引位置的值
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 end2.返回zset的元素长度
zcard key3.返回权重大小之间的值的元素个数
zcount key min max4.返回某个元素的权重
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})