Redis五大数据结构的操作

Redis五大基本数据结构

  • 字符串 string
  • 哈希类型 hash
  • 列表类型 list
  • 集合类型 set
  • 有序集合类型 sortedset

基本操作

字符串 string

  • 存储 set key value
    例:set username tom
  • 获取 get key
    例:get username
  • 删除 del key
    例:del username

如下图所示:

img

哈希类型 hash

  • 存储 hset key field value
    例:hset user username tom
  • 获取 hget key field
    例:get user username
    hgetall key 获取所有的field-value值
  • 删除 hdel key field
    例:del user username

如下图

img

列表类型 list

可以添加一个元素在列表头部或尾部 类似队列

  • 存储 lpush key value 从左边添加
    rpush key value 从右边添加
    例: lpush username tom
  • 获取 lrange key start end : 获取范围
    例: lrange username 0 1 获取 0 1 两个key值的value
    lrange username 0 -1 获取所有的value
  • 删除 lpop key 删除列表最左边的元素,并且将该元素返回
    rpop key 删除列表最右边的元素,并且将该元素返回
    例:lpop username

如下图

img

集合类型 set

不允许重复元素,元素无序

  • 存储 sadd key value
    例:sadd username tom
  • 获取 smembers key 获取set集合中所有元素
    例:smembers username
  • 删除 srem key value
    例:srem username tom

如下图

img

有序集合类型 sortedset

不允许重复元素,元素有序
每个元素都会关联一个double类型的分数,即通过分数按照从小到大排序

  • 存储 zadd key score value
    例:szadd username 60 tom
  • 获取 zrange key start end
    例:zrange username 0 -1
  • 删除 zrem key value
    例:zrem username tom

如下图

img

Django中使用redis的方法

一、redis数据操作

1、redis的存储格式为 key-value格式。key是字符串类型,value的类型有5种:string、hash、list、set、zset。

2、redis中关于键的常见的操作:

1、查看左右的键:keys *

2、查看某个键是否存在,存在返回1不存在返回0:exists key1

3、查看键的值对应的数据类型:type key1

4、删除键值对:del key1 key2

5、设置键的过期时间,如果没有指定默认一直存在:expire key seconds

6、查看键的有效时间:ttl key1

7、清空数据库:flushall

3、string类型的基本操作:

1、保存

set key value  

保存单个键值对 mset key1 value1 key2 value2  

保存多个键值对 setex key seconds value  

设置键值和过期时间 append key value追加值

2、获取

get key  

获取单个 mget key1 key2  获取多个

3、删除

del key

4、 hash类型的基本操作:

1、保存

hset key field value #设置单个属性
hmset key field1 value1 field2 value2 ... #设置多个属性

2、获取

hkeys key # 获取指定键的所有属性
hget key field # 获取单个属性的值
hmget key field1 field2 ... # 获取多个属性的值
hvals key # 获取所有属性的值

3、删除

del key # 删除整个hash的键和值
hdel key field1 field2 ... # 删除属性和属性对应的值

4、关于hash类型的个人理解:

可以将hash类型理解为用来存储对象:

img

5、list类型的基本操作:

1、保存

lpush key value1 value2 ... #从左侧依次插入数据
rpush key value1 value2 ... #从右侧依次插入数据
linsert key before或after 现有元素 新元素 #从指定元素的前或后插入新元素

2、获取

lrange key start stop 

start、stop为元素的下标索引,从左侧开始,第一个元素为0,-1标识最后一个元素。获取所有的元素:lrange key 0 -1

3、删除指定元素

lrem key count value

count > 0: 从头到尾移除

count < 0: 从尾到头移除

count = 0: 移除所有

6、set类型的基本操作

特点:无序集合、元素唯一性不重复、没有修改操作

1、增加元素

sadd key member1 member2 ...

2、获取元素

smembers key # 返回所有元素

3、删除指定元素

srem key member1 member2 ...

7、zset类型的数据操作

特点:有序集合、元素唯一性不重复、没有修改操作、每个元素都会关联一个double类型的权重,根据权重从小到大排列

1、增加

zadd key score1 member1 score2 member2 ...

2、获取

zrange key start stop  # 根据索引获取
 
zrangebyscore key min max  # 获取权重在min和max之间的数据
zscore key member  # 返回成员member的score值

3、删除

zrem key member1 member2 ... # 删除指定元素
zremrangebyscore key min max #删除权重在指定范围的元素

二、redis与python进行交互

1、在虚拟环境中安装redis包:

pip3 install redis

2、调用模块:

from redis import StrictRedis

3、创建对象:

sr = StrictRedis(host='localhost', port=6379, db=0)  # 默认就是这样的值,不写也行。

4、用sr这个对象操作redis,将redis中的命令当作函数让sr调用就ok。

三、Django框架中session存储到redis的配置

默认情况下session是存储在数据库中的,但是当用session保存用户的状态时,用户频繁的访问服务器,会增大数据库的压力,也会降低用户访问的速度。为了解决这个问题将session存储到redis中。

第一种配置方法:(不使用Django中session默认的存储方式,直接将session存储的地方配置到redis中)

[复制代码](javascript:void(0)😉

# 1.在虚拟环境中安装包
pip install django-redis-sessions==0.5.6
 
# 2.在Django项目的settings文件中增加下面的配置
SESSION_ENGINE = 'redis_sessions.session'
SESSION_REDIS_HOST = 'localhost'
SESSION_REDIS_PORT = 6379
SESSION_REDIS_DB = 2
SESSION_REDIS_PASSWORD = ''
SESSION_REDIS_PREFIX = 'session'

[复制代码](javascript:void(0)😉

第二种配置方法:(先将Django中的缓存设置为redis,然后将session的存储地方设置为Django的缓存中)

[复制代码](javascript:void(0)😉

#1.先在虚拟环境中安装包
pip install django_redis
 
#2. 设置redis作为django的缓存设置
CACHES = {
 "default": {
  "BACKEND": "django_redis.cache.RedisCache",
  # 把这里缓存你的redis服务器ip和port
  "LOCATION": "redis://172.16.179.142:6379/12",
  "OPTIONS": {
   "CLIENT_CLASS": "django_redis.client.DefaultClient",
  }
 }
}
 
# 3.设置redis存储django的session信息
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"
posted @ 2020-11-04 08:13  HC丿胖头鱼  阅读(120)  评论(0编辑  收藏  举报