一、简单介绍
redis是一个key-value存储系统,和Memcache类似。它支持存储类型有:string(字符串)、list(链表、set集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些类型数据都支持push/pop、add/remove等操作,这些操作都是原子性的。redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存当中,区别就是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
二、安装软件包
yum -y install epel-release
yum install redis
命令列表
redis-server #redis服务器
redis-cli #redis自带的客户端
redis-benchmark #redis性能测试工具
redis-check-aof #AOF文件修复工具
Redis 默认监听6379端口
三、Redis基本使用
1、使用默认端口连接本地redis服务
[root@localhost ~]# redis-cli
127.0.0.1:6379> exit 退出客户端
2、增删改查数据
[root@localhost ~]# redis-cli
127.0.0.1:6379> help set
SET key value [EX seconds] [PX milliseconds] [NX|XX]
127.0.0.1:6379> set name shark
OK
127.0.0.1:6379> get name #获取
"shark"
127.0.0.1:6379> ttl name #查询过期时间
(integer) -1
在 Redis 中设置值,默认,不存在则创建,存在则修改
参数:
ex,过期时间(秒)
px,过期时间(毫秒)
nx,假如设置为True,则只有 name 不存在时,当前 set 操作才执行
xx,假如设置为True,则只有 name 存在时,当前 set 操作才执行
ttl ,查看一个key的过期时间
- -1 永不过期
- -2已经过期
expire ,指定过期时间
127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> ttl age
(integer) -1
127.0.0.1:6379> expire age 20
(integer) 1
127.0.0.1:6379> ttl age
(integer) 14 #剩余一个key的过期时间(单位:秒)
删除 --del
127.0.0.1:6379> set name shark
OK
127.0.0.1:6379> get name
"shark"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)
3、配置文件
路径/etc/redis.conf
#设置监听地址
bind 127.0.0.1
或 bind 0.0.0.0(全部)
#设置监听端口
port 6379
四、Visual Code软件-Python3操作Redis
1、本地安装包
pip3 install redis
2、连接
操作redis.py
import redis
r = redis.Redis(host='10.3.134.110',port=6379,password='foo')
#redis 0 - 15 总共16个
v = r.get("name")
s1 = str(v,encoding='utf-8')
print(s1)
3、连接池
redis-py使用connection pool来管理redis server的所有连接,避免每次建立、释放连接的开销。默认每个Redis实例都会维护一个自己的连接池。可直接建立一个连接池,然后作为参数传给Redis,这样就可以实现多个 Redis 实例共享一个连接池。
#连接池
pool = redis.ConnectionPool(host='10.3.134.110',port=6379,password='foo')
rs =redis.Redis(connection_pool=pool)
b = rs.set("foo","bar")
a = rs.get("foo")
print(b)
print(a)
输出
True
b'bar'
4、基本操作
-
string操作
redis中的 String 在内存中按照一个name对应一个value来存储
set(name, value, ex=None, px=None, nx=False, xx=False)
set()
"""
在 Redis 中设置值,默认,不存在则创建,存在则修改
参数:
ex,过期时间(秒)
px,过期时间(毫秒)
nx,假如设置为True,则只有 name 不存在时,当前 set 操作才执行
xx,假如设置为True,则只有 name 存在时,当前 set 操作才执行
"""
setnx(name, value)
# 设置值,只有name不存在时,执行设置操作(添加)
setex(name, value, time)
"""
设置值
参数:
time,过期时间(数字秒)
"""
psetex(name, time_ms, value)
"""
设置值
参数:
time_ms,过期时间(数字毫秒)
"""
mset(*args, **kwargs)
"""
批量设置值:
mset(QF='www.qfedu.com', yangge='杨哥')
或
mget({'k1': 'v1', 'k2': 'v2'})
"""
get(name) # 获取值
mget(keys, *args)
"""
批量获取:
mget('QF', 'foo')
或
mget(['QF', 'foo'])
"""
getset(name, value)
# 设置新值并获取原来的值
getrange(key, start, end)
# 以字节的方式获取一部分值(一个汉字等于三个字节)
setrange(name, offset, value)
"""
修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)
参数:
offset 字符串的索引,字节方式
"""
incr(self, name, amount=1)
"""
自增 name对应的值,当name不存在时,则创建 name=amount,否则,则自增。
参数:
name,Redis的name
amount,自增数(必须是整数)
"""
decr(self, name, amount=1)
# 自减
append(key, value)
# 在redis name对应的值后面追加内容
网友评论