Python中的Redis操作

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特别适合存储对象

Key
name
age
address
张三
29
china

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

猜你喜欢

转载自blog.csdn.net/Narutolxy/article/details/107309883