(做缓存) 默认16个数据库
redis安装:
1,Windows下安装
1,安装包
2,压缩包
解压--配置环境变量
cmd:redis-server 另开一个:redis-cli
注册服务:
cd到目录
redis-server --service-install redis.windows.conf
2,Ubuntu下安装
1,apt/apt-get install redis-server (不推荐,易出错)
2,压缩包安装(官方提供的源代码)
1,官网下载压缩包
2,上传压缩包到ubantu ftp
3,移动压缩包到/usr/local (位置自己定) (cp redis-stable.tar.gz /usr/local )
4,解压压缩包 tar -zxvf redis-stable.tar.gz
5,cd到redis-stable
6,make 编译C/C++的源代码 -->xxx.exe
7,cd src
8,make .install
9,退回到redis-stable (cd ..)
10,运行 redis-server [./redis.conf]
11,另开窗口redis-cli
vim redis.conf --> 136行 daemonize yes 保存
再次启动:运行:redis-server [/usr/local/redis-stable/redis.conf]可省略
另开:redis-cli
port:6379
支持类型:string list set zset=sorted set(有序集合) hash
string:(k-v)
增改和获取
set k v (可不加引号)
get k
mset k v k v k v
mget k k k
setex (set expire)
setex k 10 v (10秒之后失效,无法get该v)
incr age加1 ; incrby age 5 加5 ; decr age 减1 ; decrby age 5 减5
append k aaa在name的v后拼接aaa
strlen k k对应v的长度
del key:根据key删除键值对
keys *获取所有键
exists k是否存在 (1存在 0不存在)
type k k的类型
expire k 10 k设置失效时间 (失效后会消失)
ttl k查看k的有效时间 -2已失效 -1长期有效
hash:(对象)
hset u1 k v hget k (单个)
hmset u1 k v k v k v hmget k k k(多个)
hgetall u1 (获取所有键值对) hkeys u1 (获取所有键) hvals u1 (获取所有值)
hexists u1 k是否存在
hlen u1有多少键值对
hdel u1 k删除u1 中的某个元素
list: (string hash)
lpush list1 v1 [v2 v3]左侧增加
rpush list1 v1 [v2 v3]右侧增加
lrange list1 0 -1查看所有值
linsert list1 before/after v1 v2在v1前/后插入v2
lset list1index value:设置指定索引的元素的值
lpop list1:删除并且获取list1对应的list第一个元素
rpop list1:删除并且获取list1对应的list最后一个元素
set : (无序储存多个数据)
sadd key value [value]:添加多个数据到key集合中
smembers key:获取key集合中所有的数据
sismember key value:判断value是否在key集合中存在
scard key:获取key集合中元素的个数
zset:(有序储存多个数据)
zadd key score value [ score value]:添加多个带权重的数据到key集合中
zrange key start stop:获取指定范围中所有的元素
zcard key:返回元素的个数
zcount key min max:返回score值在min和max之间的数据
zscore key member:返回集合中member元素的score值
CAP所有nosql的基础:CAP {(一致性 可用性 分区容错性)三者无法兼顾(CP/AP)}
python调用redis:
首次:cmd --> pip install redis
import redis
r = redis.StrictRedis(host="localhost", port=6379)
[ #python操作redis为了效率,如我们一次提交多个数据,可以使用管道完成:
pipe = r.pipeline() #申请管道
#在管道中保存数据
pipe.set(“id”,5)
pipe.set(“k”,”v”)
pipe.set(“k1”,”v1”)
#提交管道中的数据(必须)
Pipe.execute() ]
print(r.get("k").decode(utf-8))
.decode(utf-8)---> 将乱码转换为正常值