最全的Redis操作,看完这篇就够了

603 阅读3分钟

1.Redis内存数据库

  • Redis基于内存可持久化的日志型、Key-Value数据库
  • 存储的数据类型(string,int,float,list,set,hash)
  • Redis在缓存、队列中多有应用
  • 原子性-Redis所有操作都是原子性的,并且支持事务,不支持回滚
  • 数据持久化-可以将内存数据保存到磁盘中,并提供多种存储机制
  • 数据备份-支持主从模式(master-slave)
  • 集群-支持集群,并实现了哨兵机制
  • 丰富的特性-设置过期事件,发布/订阅,通知等机制

2.应用场景

  • session存储(性能更好,方便设置过期时间)
  • 购物车(记录用户当前购物车商品信息)
  • 网页缓存(将请求的url路由返回的网页信息,存储在redis的key-value中)
  • 实时排名(redis存储数据权重信息,提供排名数据)

3.安装

#ubuntu安装
sudo apt-get install redis-server
# MAC使用homebrew安装
brew install redis-server

4.配置

  • (默认配置可以不操作)
# 查看Redis配置信息
cat /etc/redis/redis.conf
# IP地址
bind 127.0.0.1  
# 端口号
port 6379  
# 是否以守护进程运行
daemonize yes 
# 日志文件(错误信息) 存储路径
logfile "/var/log/redis/redis-server.log"
# 数据持久化文件名
dbfilename dump.rdb
# 数据持久化文件的存储路径
dir ./
# 自动持久化策略 如果60秒内执行了100次修改则自动保存一次
save 60 100 save 900 1
# 是否开启aof持久化机制
appendonly no
# 数据库,默认有16个
database 16
# 从设置,指定主服务器的ip+端口
slaveof
如果修改日志文件、持久化文件名或路径,需要对存放文件/路径开启权限, 否则记录/保存失败 如 sudo chmod 777 /var/log/redis/redis-server.log

5.启动

redis-serve

6.服务端和客户端命令

  • 开启数据库
redis-server # 以默认配置启动
redis-server ./redis.conf # 以自定义配置启动, 推荐
redis-server --help # 查看帮助⽂档
  • 连接数据库
redis-cli # 以默认配置连接
redis-cli -h 127.0.0.1 -p 6379 # 连接指定服务的数据库
redis-cli --help # 查看帮助⽂档
  • 连接测试
ping
  • 切换数据库
select 15
  • 数据持久化
bgsave  # 异步持久化数据库
  • 清空数据库
flushall  # 清空所有数据库
flushdb  # 清空当前数据库
  • 关闭数据库
shutdown [NOSAVE] [SAVE]  # 关闭数据库,使用save则会先持久化数据库
  • kill Redis数据库进程
lsof -i:6379  # 查看数据库进程pid
或 ps aux | grep redis 
kill -9 pid  # 结束redis进程

7.redis-cli数据操作

| 不同数据类型,调用Redis方法

  • string

  • keys

  • hash

  • list

  • set 元素为string类型,无序,唯一性,没有修改操作

  • zset元素为string类型,有序集合,元素关联double类型的socre,表示全中,将元素从小到大排序,没有修改操作。

8.python交互

  • 创建连接对象
import redis
con = redis.Redis(host='localhost', port=6379, decode_responses=True, db=0)

demo1.py

import redis
try:
    con = redis.Redis(host='localhost', port=6379, decode_responses=True, db=0)
    # 添加键 name 值为test
    a= con.set('name','test')#set方法/增改
    b = con.get('name')#get方法/查
    c = con.keys()#keys方法/keys
    d = con.delete('name')# delete方法/删除
    print('写入', a)  
    print('查询', b)  
    print('keys', c)
    print('删除', d)  
except Exception as e:
    print(e)

demo2.py

import redis
try:
    con = redis.Redis(host='localhost', port=6379, decode_responses=True, db=0)
    # 写入hashMap类型数据
    user1 = {"name":"zhangsan","age":18}
    con.hmset('zhangsan', user1)
    content = con.hmget("zhangsan","name")[0]
except Exception as e:
    print(e)