一、Redis简介
redis常用作服务器与数据库之间的一个缓存
客户端 服务器 redis 数据库
客户端向服务器发起登录请求,服务器将用户名和密码拿去与redis中的缓存匹配,
*若存在匹配值,且验证通过。则允许登录。
*若存在匹配值,且验证不通过,则不允许登录
*若redis中找不到匹配值,则向数据库发起请求,验证完成后,再将信息写入redis中。
redis官方没有为windows开发环境,但从github上可以找到windows版本的redis。
1、rerdis windows下载连接:https://github.com/ServiceStack/redis-windows
2、下载完成后找一个目录解压,解压完成后在download目录下找到redis64-2.8.2101解压在你需要安装的目录
3、修改redis.windows.conf文件:
1、455行添加:maxheap 1024000000
2、387行添加:requirepass 密码(密码处替换为你自己的密码)
***此处注意巨坑:在所有修改过的配置项前不能留有空格,否则无法启动
4、启用cmd进入安装路径,执行redis-server.exe redis.windows.conf
5、新启动一个cmd,进入对应目录执行:redis-cli.exe
ping命令测试服务器连接情况,第一次会显示连接有误
输入auth '密码'进行密码校验
6、可视化操作工具:redis-desktop
数据操作:1、redis是key-value的数据,所以每个数据都是一个键值对
2、键的类型是字符串
3、值的类型有五种:字符串string
哈希hash
列表list
集合set
有序集合zset
4、数据操作的全部命令 http://redis.cn/commands.html
二、redis命令
一、String
概述:是redis最基本的类型,最大能存储512mb的数据,string类型是二进制安全的,即可以存储任何数据,比如数字、图片、序列化对象等
1、设置
a、设置键值
语法:set key value
示例:set a "hello redis"(加引号表示引号内是一串数据)
b、设置键值过期时间,以秒为单位
语法:setex key second value
示例:setex c 10 good
c、设置多个键值
语法:mset key value [key value...]
示例:mset d good e nice
2、获取
a、根据键获取值,如果键不存在则返回Null(none 0 nil)
语法:get key
示例:get e
b、根据多个键获取多个值
语法:mget key [key....]
示例:mget a b d
3、运算
要求:值是字符串类型的数字
a、将key对应的值加1
incr key
b、将key对应的值减1
decr key
c、将key对应的值加整数
incrby key intnum
d、将key对应的值加整数
decrby key intnum
4、其他
a、追加值
语法:append key value
示例:append b !(追加一个感叹号)
b、获取值长度
strlen key
二、key
1、查找键,参数支持正则
语法:keys pattern
示例:keys *
2、判断键是否存在,存在返回1,否则0
语法:exists key
示例:exists a
3、查看键对应的value类型
type key
4、删除键及对应的值
del key [key ....]
5、设置过期时间
expire key seconds
6、查看有效时间
ttl key
三、hash
概述:用于存储对象
{
name:"tom",
age:18
}
1、设置
a、设置单个值
hset key field value
b、设置多个值
语法:hmset key field value[field value ....]
示例:hmset p2 name lc age 22
2、获取
a、获取一个属性的值
语法:hget key field
示例:hget p1 name
b、获取多个值
hmget key filed [filed...]
c、获取所有属性和值
hgetall key
d、获取所有的属性
hkeys key
e、获取所有值
hvals key
f、返回包含属性的个数
hlen key
3、其他
a、判断属性是否存在,存在返回1,否则0
hexists key field
b、删除属性及值
hdel key field [filed....]
c、返回值的字符串长度
hstrlen key field(有错误)
四、list
概述:列表的元素类型为string,按照插入顺序排序,在列表的头部或尾部添加数据
1、设置:
a、在头部插入
lpush key value [values]
b、在尾部插入
rpush key value [values]
c、在一个元素的前或后插入新元素
linsert key before|after pivot value
d、设置指定索引的元素值
lset key index value
注意:index下标从0开始,索引值也可以是负数,表示偏移量从list的尾部开始,如-1表示最后一个元素
2、获取:
a、移除并返回key对应的list的第一个元素
lpop key
b、移除并返回key对应的list的最后一个元素
rpop key
c、返回存储在key的列表中的指定范围的元素
lrange key start end
注意:start end都是从0开始,偏移量可以是负数
3、其它
a、裁剪列表,改为原集合的一个子集
ltrim key start end
注意:start end都是从0开始,偏移量可以是负数
b、返回存储在key里的list的长度
llen key
c、返回列表中索引对应的值
lindex key index
五、set
概述:无序集合,元素类型为string类型,元素具有唯一性,不重复
1、设置
a、添加元素
sadd key member [member...]
2、获取
a、返回key集合中所有元素
smembers key
b、返回集合元素个数
scard key
3、其它
a、求多个集合的交集
sinter key [key...]
b、求多个集合的差集
sdiff key [key..]
c、求多个集合的合集
sunion key [key]
d、判断元素是否在集合中,存在返回1,反之返回0
sismember key member
六、zset
概述:
a、有序集合,元素类型为string,元素具有唯一性,不能重复
b、每个元素都会关联一个double类型的score(表示权重)
c、通过权重的大小排序,元素的score可以相同
1、设置
a、添加
zadd key score memeber [score memeber ..]
2、获取
a、返回指定范围的元素
zrange key start end
b、返回元素个数
zcard key
c、返回有序集合key中,score在min和max之间的元素的个数
zcount key min max
d、返回有序集合key中,成员member的score值
zscore key member
三、redis与python交互
#安装redis库 pip install redis
import redis
#连接
r = redis.StrictRedis(host="localhost",port=6379,password="root")
#方法一:根据数据类型不同调用相应的方法
#写
# r.set("p1","good")
#
# #读取
# print(r.get("p1"))
#方法二:pipline
#缓存多条命令,然后依次执行,减少服务器-客户端之间的tcp数据包
pipe = r.pipeline()
pipe.set("p2","nice")
pipe.set("p3","handsome")
pipe.set("p4","cool")
pipe.execute()