Redis五大数据结构的操作
Redis五大基本数据结构
- 字符串 string
- 哈希类型 hash
- 列表类型 list
- 集合类型 set
- 有序集合类型 sortedset
基本操作
字符串 string
- 存储 set key value
例:set username tom - 获取 get key
例:get username - 删除 del key
例:del username
如下图所示:
哈希类型 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
如下图
列表类型 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
如下图
集合类型 set
不允许重复元素,元素无序
- 存储 sadd key value
例:sadd username tom - 获取 smembers key 获取set集合中所有元素
例:smembers username - 删除 srem key value
例:srem username tom
如下图
有序集合类型 sortedset
不允许重复元素,元素有序
每个元素都会关联一个double类型的分数,即通过分数按照从小到大排序
- 存储 zadd key score value
例:szadd username 60 tom - 获取 zrange key start end
例:zrange username 0 -1 - 删除 zrem key value
例:zrem username tom
如下图
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类型理解为用来存储对象:
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"