Redis数据库

服务端指令

查看帮助文档

  • redis-server --help

 

启动redis服务端

  • redis-server

  • redis-server /usr/local/etc/redis.conf

  • brew services start redis

 

关闭redis

  • redis-cli shutdown

 

个人使用习惯

  • ps aux | grep redis 查看redis服务器进程

  • sudo kill -9 pid 杀死redis服务器

  • sudo redis-server /etc/redis/redis.conf 指定加载的配置文件

 

 

客户端指令

查看帮助文档

  • redis-cli --help

 

连接redis服务端

  • redis-cli -h 127.0.0.1 -p 6379

 

常用命令:

  1. 执行测试命令 ping

  2. 切换数据库 select 10

    数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库

 

 

redis.conf 配置说明

配置项默认值说明
daemonize no 守护进程运行(后台运行)
pidfile /var/run/redis.pid 当 Redis 以守护进程方式运行时,会产生一个pid文件。Redis 默认会把 pid 写入 /var/run/redis.pid 文件,可以通过 pidfile 指定
Port 6379 指定 Redis 监听端口,默认端口为 6379
bind 127.0.0.1 绑定的主机地址
timeout 300 当客户端闲置多长秒后关闭连接,如果指定为 0 ,表示关闭该功能
loglevel notice 指定日志记录级别,Redis 总共支持四个级别:debug、verbose、notice、warning
logfile stdout 日志记录方式,默认为标准输出,如果配置 Redis 为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给 /dev/null
databases 16 设置数据库的数量,默认数据库为0,可以使用SELECT 命令在连接上指定数据库id
dbfilename dump.rdb 指定本地数据库文件名,用于将内存的数据保存到硬盘中的某个文件中
dir ./ 指定本地数据库存放目录,用于指定将内存的数据保存到硬盘中的某个位置下
slaveof <masterip> <masterport>   主从复制,实现双机备份。设置当本机为 slave 服务时,设置 master 服务的 IP 地址及端口,在 Redis 启动时,它会自动从 master 进行数据同步

 

 

redis数据操作

五种数据类型:

  • 字符串string

  • 哈希hash

  • 列表list:

  • 集合set

  • 有序集合zset

 

String类型:基础的数据存储类型

  • 数据操作(可用命令查询操作格式:help set、help get ….)

    • 增加:

      set key value

    • 查询:

      get key

    • 修改:

      set key value

    • 删除:

      del key

  • 批量数据操作

    • 批量增加

      mset key value key value

    • 批量查询

      mget key key

       

hash类型:hash⽤于存储对象,对象的结构为属性、值

  • 数据操作(可用命令查询操作格式:help hset、help hget ….)

    • 增加:

      hset key field value

    • 查询:

      hget key field value

    • 修改:

      hset key field value

    • 删除:

      • 删除key中的field:

        hdel key field

      • 删除一整个key:

        del key

  • 批量数据操作

    • 批量增加

      hmset key field value field value

    • 批量查询

      hmget key field field

  • 其他操作

    • 查看key中所有的field和value:

      hgetall key

    • 查看key中所有的field:

      hkeys key

    • 查看key中所有的value:

      hvals key

 

list类型:列表的元素类型为string,按照插⼊顺序排序

数据操作(可用命令查询操作格式:help lpush、help linsert ….)

  • 增加:

    • 从左往右增加

      lpush key value value ...

    • 从右往左增加

      rpush key value value ...

    • 特定位置插入添加

      linsert key before|after old_value new_value

  • 查询:

    lrange key start_index stop_index

  • 修改:

    lset key index value

  • 删除:

    • 删除一整个key:

      del key

    • 删除key列表中的value

      lrem key count value

      count:

      0: 删除所有value

      正数:从左往右删count个value

      负数:从右往左删count个value

       

set类型:⽆序集合,元素为string类型,元素具有唯⼀性(不重复),集合没有修改操作

数据操作(可用命令查询操作格式:help zadd、help zmembers ….)

  • 增加:

    sadd key member member ...

  • 查询:

    smembers key

  • 删除

    srem key member

 

zset类型:

有序集合,元素为string类型,元素具有唯⼀性(不重复),集合没有修改操作,每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序

  • 增加:

    zadd key score member score member ...

  • 查询:

    • 查询在指定范围内的元素

      zrange key start_index stop_index

    • 查询权重在指定范围内的元素,包括min和max

      zrangebyscore key min max

    • 查询某个元素的权重

      zscore key member

  • 删除

    • 删除指定元素

      zrem key member

    • 删除权重在指定范围的元素,包括min和max

      zremrangebyscore key min max

 

键命令

  • 查看当前所有的key

    • keys *

  • 查看以a开头的所有key

    • keys a*

  • 判断键key是否存在

    • exists key

  • 查看键对应的value的类型

    • type key

  • append追加(key已存在)

    • append key value

  • 设置key value的有效时间

    • setex key time value

  • 给已存在的key设置有效时间

    • expire key time

  • 查看剩余有效时间

    • ttl key

 

 

Python操作redis:

# # 1.python操作redis,未使用连接池
# import redis
#
#
# def index(request):
#     # 创建redis连接,主机+端口+密码(没有设置可以不写)+数据库db
#     conn = redis.Redis(host='127.0.0.1', port=6379, db=0)
#     # 往0号数据库写入String数据
#     conn.set('name', 'hcl')
#     # 往0号数据库批量写入String数据
#     conn.mset({'address': 'xxx', "age": 18})
#
#     # 往0号数据库写入数据,并设置有效时间
#     conn.setex('days', 5, 22)
#     return HttpResponse("设置成功")
#
#
# def order(request):
#     # 创建redis连接,主机+端口+密码(没有设置可以不写)+数据库db
#     conn = redis.Redis(host='127.0.0.1', port=6379, db=0)
#     # 获取String数据
#     res = conn.get('name')
#     print(res.decode('utf-8'))
#     # 获取数据,注意:此句已设置时间,超时则不存在days
#     res = conn.get('days')
#     print(res.decode('utf-8'))
#     return HttpResponse("获取成功")

python操作redis1-未使用连接池
python操作redis1-未使用连接池
# 2.python操作redis,使用连接池
# import redis
#
#
# def index(request):
#     # 创建连接池
#     POOL = redis.ConnectionPool(host='127.0.0.1', port=6379, db=0)
#     # 创建redis连接
#     conn = redis.Redis(connection_pool=POOL)
#     # 往0号数据库写入hash数据
#     conn.hset('people', 'name', 'hcl')
#     # 往0号数据库批量写入hash数据
#     conn.hmset('people', {'age': 18, 'height': 180})
#
#     return HttpResponse("设置成功")
#
#
# def order(request):
#     # 创建连接池
#     POOL = redis.ConnectionPool(host='127.0.0.1', port=6379, db=0)
#     # 创建redis连接
#     conn = redis.Redis(connection_pool=POOL)
#     # 获取单个hash数据
#     res = conn.hget('people', 'name')
#     print(res.decode('utf-8'))
#     # 批量获取hash数据
#     res = conn.hgetall('people')
#     print(res)
#     return HttpResponse("获取成功")

python操作redis2-使用连接池
python操作redis2-使用连接池
# 3.Redis缓存,(依赖:pip3 install django-redis)
# '''
# setting中添加配置信息:
# CACHES = {
#     "default": {
#         "BACKEND": "django_redis.cache.RedisCache",
#         "LOCATION": "redis://127.0.0.1:6379/0",
#         "OPTIONS": {
#             "CLIENT_CLASS": "django_redis.client.DefaultClient",
#             "CONNECTION_POOL_KWARGS": {"max_connections": 100}
#             # "PASSWORD": "密码",
#         }
#     }
# }
# '''
# from django_redis import get_redis_connection
#
#
# def index(request):
#     # 创建连接
#     conn = get_redis_connection('default')
#     # 往0号数据库写入数据
#     conn.set('age', 22)
#     return HttpResponse("设置成功")
#
#
# def order(request):
#     conn = get_redis_connection('default')
#     # 获取单个hash数据
#     res = conn.get('age')
#     print(res.decode('utf-8'))
#     return HttpResponse("获取成功")

python操作redis3:Redis缓存-(依赖:pip3 install django-redis)
python操作redis3-Redis缓存,(依赖:pip3 install django-redis)

 

redis应用:

# # redis缓存应用1.缓存全站:缓存一整个网站信息
# '''
# 使用中间键:
#  必须添加:
#  MIDDLEWARE = [
#         'django.middleware.cache.UpdateCacheMiddleware',
#         # 其他中间件...
#         'django.middleware.cache.FetchFromCacheMiddleware',
#     ]
#
#  选择性添加:
#     # 设置缓存别名
#     CACHE_MIDDLEWARE_ALIAS = ""
#     # 设置缓存时间:秒
#     CACHE_MIDDLEWARE_SECONDS = ""
#     CACHE_MIDDLEWARE_KEY_PREFIX = ""

# views.py不需要其他操作,会自动加入缓存
# '''
# import time
#
#
# def index(request):
#     # 已经缓存到redis中,接下来再访问,时间不会更新
#     ctime = str(time.time())
#     return HttpResponse(ctime)
#
#
# def order(request):
#     # 已经缓存到redis中,接下来再访问,时间不会更新
#     ctime = str(time.time())
#     return HttpResponse(ctime)

redis缓存应用1-全站缓存:缓存一整个网站信息
redis缓存应用1-缓存全站:缓存一整个网站信息
# redis缓存应用2.单视图缓存:缓存单个views;优先级高于全局。即:单视图缓存存在,全局无效
# '''
# from django.views.decorators.cache import cache_page
# @cache_page(60 * 15)
# '''
# import time
# from django.views.decorators.cache import cache_page
#
#
# @cache_page(10)
# def index(request):
#     # 单视图已经缓存到redis中,接下来再访问,时间不会更新
#     ctime = str(time.time())
#     return HttpResponse(ctime)
#
#
# def order(request):
#     # 该视图没有缓存到redis中,接下来再访问,时间会更新
#     ctime = str(time.time())
#     return HttpResponse(ctime)

redis缓存应用2-单视图缓存:缓存单个views;优先级高于全局
redis缓存应用2-单视图缓存:缓存单个views;优先级高于全局。即:单视图缓存存在,全局无效
# redis缓存应用3.局部视图缓存:缓存views中的一部分;
# 例如购物商城中的商品信息不变,可以为局部视图缓存,不必去数据库拿,而剩余数量则可以去数据库更新
# 适用于:某些经常不变化得到东西,比如前端的一些固定标题数据
# '''
#
# 在HTML中:
# {% load cache %}
#
#
#     //5000秒后消失
#         {% cache 5000 缓存key %}
#             缓存内容
#         {% endcache %}
#
# '''
#
#
# def order(request):
#
#     return render(request, 'order.html')

redis缓存应用3-局部视图缓存:缓存views中的一部分;
redis缓存应用3-局部视图缓存:缓存views中的一部分

 

posted @ 2020-12-10 16:27  麟灬  阅读(58)  评论(0)    收藏  举报