redispy安装及连接
pip install redis
Redis的配置文件
/etc/redis/redis.conf
当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面。
daemonize no
监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。
port 6379
设置数据库的数目。
databases 16
根据给定的时间间隔和写入次数将数据保存到磁盘
下面的例子的意思是:
900 秒内如果至少有 1 个 key 的值变化,则保存
300 秒内如果至少有 10 个 key 的值变化,则保存
60 秒内如果至少有 10000 个 key 的值变化,则保存
save 900 1
save 300 10
save 60 10000
监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。
port 6379
Redis默认只允许本地连接,不允许其他机器连接
bind 127.0.0.1
redis常操作
DBSIZE 查看当前数据库的key数量
keys * 查看key的内容
FLUSHDB 清空当前数据库的key的数量
FLUSHALL 清空所有库的key(慎用)
exists key 判断key是否存在
#windows下
redis-server
redis-cli
redis常用五大数据类型
redis-string
string是redis最基本的类型,一个key对应一个value
常用操作
名称 | 描述 | 实例 |
---|---|---|
set | 设置值 | set key vaule |
get | 获取值 | get key |
mset | 设置多值 | set key1 vaule1 key2 vaule2 |
mget | 获取多值 | mget key1 key2 |
append | 原有字段后面添加值 | append key1 |
key * | 返回所有变量值 | key * |
del | 删除值 | del key |
strlen | 返回字符串长度 | strlen key |
expire | 让键值几秒过期 | expire key 3 表示key值三秒后过期 |
字符串设置
127.0.0.1:6379> set name naruto
OK
127.0.0.1:6379> get name
"naruto"
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> mset home bj age 18 sex man like movie
OK
127.0.0.1:6379> get age
"18"
127.0.0.1:6379> get sex
"man"
127.0.0.1:6379> keys *
1) "name"
2) "like"
3) "age"
4) "sex"
5) "home"
127.0.0.1:6379> get name
"naruto"
127.0.0.1:6379> append name 123
(integer) 9
127.0.0.1:6379> get name
"naruto123"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> keys *
1) "like"
2) "age"
3) "sex"
4) "home"
字符串数值
名称 | 描述 | 实例 |
---|---|---|
incr | 自增加1 | incl key (返回增加后的值) |
decr | 自减1 | decr key (f返回减少后的值) |
incrby | 增加指定值 | inclby key (返回增加后的值) |
decrby | 增加指定值 | decrby key (返回增加后的值) |
127.0.0.1:6379> get number
"102"
127.0.0.1:6379> incr number
(integer) 103
127.0.0.1:6379> get number
"103"
127.0.0.1:6379> incr number
(integer) 104
127.0.0.1:6379> get number
"104"
127.0.0.1:6379> decr number
(integer) 103
127.0.0.1:6379> decr number
(integer) 102
127.0.0.1:6379> incrby number 100
(integer) 202
127.0.0.1:6379> decrby number 20
(integer) 182
字符串截取
名称 | 描述 | 实例 |
---|---|---|
getrange | 获取指定区间范围内的值,类似between…and的关系1 | getrange key start end |
setrange | 代表从第几位开始替换,下脚本从零开始 | setrange key start end |
getrange ---- 获取指定区间范围内的值,类似between…and的关系
setrange ---- 代表从第几位开始替换,下脚本从零开始
从0 -1表示全部
127.0.0.1:6379> set name naruto123456
OK
127.0.0.1:6379> get name
"naruto123456"
127.0.0.1:6379> getrange name 0 5
"naruto"
127.0.0.1:6379> getrange name 0 -1
"naruto123456"
127.0.0.1:6379> setrange name 6 ***
(integer) 12
127.0.0.1:6379> get name
"naruto***456"
redis-list(单值多value)
List列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素列表的头部(左边)或者尾部(右边)它的底层实际是个链表。
1.lpush/rpush/lrange
lpush/rpush/lrange ---- 从左/从右/获取指定长度
lpush list01 1 2 3 4 5 倒序排列
rpush list02 1 2 3 4 5 正序排列
lrange list01 0 -1 获取list01 中的所有值
127.0.0.1:6379> lpush list_lp 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> lrange list_lp 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
127.0.0.1:6379> rpush list_rp 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> lrange list_rp 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
2.lpop/rpop
lpop/rpop ---- 移除最左/最右
lpop list01 删除元素5
rpop list01 删除元素1
127.0.0.1:6379> lpop list_lp
"6"
127.0.0.1:6379> lpop list_lp
"5"
127.0.0.1:6379> lpop list_rp
"1"
127.0.0.1:6379> lpop list_rp
"2"
127.0.0.1:6379> lrange list_rp 0 -1
1) "3"
2) "4"
3) "5"
4) "6"
127.0.0.1:6379> lrange list_lp 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
3.lindex,按照索引下标获得元素(从上到下)
lrange list01 0 -1
lindex list01 1
127.0.0.1:6379> lrange list_lp 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> lindex list_lp 0
"4"
127.0.0.1:6379> lindex list_lp 1
"3"
127.0.0.1:6379> lindex list_lp 2
"2"
127.0.0.1:6379> lindex list_lp 3
"1"
4.llen,求列表长度
llen list01
127.0.0.1:6379> llen list_rp
(integer) 4
127.0.0.1:6379> lrange list_rp 0 -1
1) "3"
2) "4"
3) "5"
4) "6"
5.lrem key
删N个value
lrem list01 2 1 在list01中删除2个1
127.0.0.1:6379> lpush list_r_it 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
(integer) 15
127.0.0.1:6379> lrange list_r_it 0 -1
1) "5"
2) "5"
3) "5"
4) "5"
5) "5"
6) "4"
7) "4"
8) "4"
9) "4"
10) "3"
11) "3"
12) "3"
13) "2"
14) "2"
15) "1"
127.0.0.1:6379> lrem list_r_it 3 3
(integer) 3
127.0.0.1:6379> lrange list_r_it 个数 值
1) "5"
2) "5"
3) "5"
4) "5"
5) "5"
6) "4"
7) "4"
8) "4"
9) "4"
10) "2"
11) "2"
12) "1"
127.0.0.1:6379>
6.ltrim key
ltrim ---- 开始index结束index,截取指定范围的值后在赋值给key
ltrim list01 0 2 截取list01 从0到2的数据在赋值给list01
127.0.0.1:6379> lpush list06 1 2 3 3 4 4 5 5 5 66
(integer) 10
127.0.0.1:6379> lrange list06 0 -1
1) "66"
2) "5"
3) "5"
4) "5"
5) "4"
6) "4"
7) "3"
8) "3"
9) "2"
10) "1"
127.0.0.1:6379> ltrim list06 2 6
OK
127.0.0.1:6379> lrange list06 0 -1
1) "5"
2) "5"
3) "4"
4) "4"
5) "3"
127.0.0.1:6379>
7.rpoplpush list1 list2 将list1中最后一个压入list2中第一位
lrange list01 0 -1
lrange list02 0 -1
rpoplpush list1 list2
127.0.0.1:6379> lrange list06 0 -1
1) "5"
2) "5"
3) "4"
4) "4"
5) "3"
127.0.0.1:6379> lpush list07 8 8 9 9 10 10
(integer) 6
127.0.0.1:6379> lrange list07 0 -1
1) "10"
2) "10"
3) "9"
4) "9"
5) "8"
6) "8"
127.0.0.1:6379> rpoplpush list06 list07
"3"
127.0.0.1:6379> lrange list06 0 -1
1) "5"
2) "5"
3) "4"
4) "4"
127.0.0.1:6379> lrange list07 0 -1
1) "3"
2) "10"
3) "10"
4) "9"
5) "9"
6) "8"
7) "8"
8.lset key index value
lset list02 0 x 将list02中第一位换成x
127.0.0.1:6379> KEYS *
1) "number"
2) "list_rp"
3) "like"
4) "list06"
5) "age"
6) "sex"
7) "home"
8) "list_l"
9) "name"
10) "list07"
11) "list_r_it"
127.0.0.1:6379> lrange list07
(error) ERR wrong number of arguments for 'lrange' command
127.0.0.1:6379> lrange list07 0 -1
1) "3"
2) "10"
3) "10"
4) "9"
5) "9"
6) "8"
7) "8"
127.0.0.1:6379> lset list07 2 100
OK
127.0.0.1:6379> lrange list07 0 -1
1) "3"
2) "10"
3) "100"
4) "9"
5) "9"
6) "8"
7) "8"
9.linsert key before/after
linsert list01b before x php 在x之前加字段php
linsert list01b after x php 在x之前加字段php
127.0.0.1:6379> lrange list07 0 -1
1) "3"
2) "10"
3) "100"
4) "9"
5) "9"
6) "8"
7) "8"
127.0.0.1:6379> linsert list07 before 10 na
(integer) 8
127.0.0.1:6379> lrange list07 0 -1
1) "3"
2) "na"
3) "10"
4) "100"
5) "9"
6) "9"
7) "8"
8) "8"
127.0.0.1:6379> linsert list07 before 9 nine
(integer) 9
127.0.0.1:6379> lrange list07 0 -1
1) "3"
2) "na"
3) "10"
4) "100"
5) "nine"
6) "9"
7) "9"
8) "8"
9) "8"
127.0.0.1:6379> linsert list07 after 9 nn
(integer) 10
127.0.0.1:6379> lrange list07 0 -1
1) "3"
2) "na"
3) "10"
4) "100"
5) "nine"
6) "9"
7) "nn"
8) "9"
9) "8"
10) "8"
redis-Hash
hash是一个键值对集合
hash是一个string类型的field和value的映射表,hash特别适合存储对象
1.hset/hget/hmset/hmget/hgetall/hdel
设值/取值/设值多个值/取多个值/取全部值/删除值
hset user id 11
hget user id
hmset customer id 11 name juran age 26
hmget customer id name age 只返回相应的值
hgetall customer 返回全部
hdel user id 删除id
127.0.0.1:6379> hset h_user id 1
(integer) 1
127.0.0.1:6379> hget h_user id
"1"
127.0.0.1:6379> hmset users name zhangsan id 2 age 30
OK
127.0.0.1:6379> hget users name
"zhangsan"
127.0.0.1:6379> hmget users
(error) ERR wrong number of arguments for 'hmget' command
127.0.0.1:6379> hmget users name id age
1) "zhangsan"
2) "2"
3) "30"
127.0.0.1:6379> hgetall users
1) "name"
2) "zhangsan"
3) "id"
4) "2"
5) "age"
6) "30"
2.hlen
求哈希长度
hlen customer
127.0.0.1:6379> KEYS *
1) "number"
2) "list_rp"
3) "like"
4) "list06"
5) "age"
6) "sex"
7) "home"
8) "users"
9) "list_l"
10) "name"
11) "h_user"
12) "list07"
13) "list_r_it"
127.0.0.1:6379> hgetall h_user
1) "id"
2) "1"
127.0.0.1:6379> hgetall users
1) "name"
2) "zhangsan"
3) "id"
4) "2"
5) "age"
6) "30"
127.0.0.1:6379> hlen users
(integer) 3
3.hexists key
hexists ---- 在key里面的某个值
存在返回1 ,不存在返回0
127.0.0.1:6379> hexists users name
(integer) 1
127.0.0.1:6379> hexists users app
(integer) 0
4.hkeys/hvals
hkeys students
hvals students
1:42:39