Rdis数据库笔记

Redis数据库

一. 简介

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

二. 数据操作

补充: Redis数据库有16个,编号分别是0-15,每个数据库用数字命名,选择数据库用命令 select number, redis的数据库个数,也是可以修改的,redis.conf里面设置了databases 16,默认是16个,0-15,如果要修改数据库个数,可以修改这个配置,修改 redis 目录下的 redis.comfig 中的 databases .

1. string类型

  • 设置键值
set key value
  • 设置键值及过期时间
setex key second value
  • 设置多个键值
mset key1 value1 key2 value2...
  • 追加值 ,对已经存在的键,对他的值进行追加内容
append key value
  • 获取键值,如果不存在则返回 nil
get key
  • 获取多个键值
mget key1 key2...
  • 删除键及对应的值
del key1 key2...

2. hash 类型

  • 简介:hash用于存储对象,对象的结构为属性 - 值
  • 设置单个属性
hset key property value
// 例:设置键 student 的属性 name 的值为 xiaohei
hset student name xiaohei
  • 设置多个属性
hset key property1 value1 property2 value2...
// 例: 设置键 student 的属性 name ,age 的值分别为 xiaohei ,23
hset student name xiaohei age 23 
  • 获取指定键的所有属性
hkeys key
// 例:获取 student 的所有属性(有 name 和 age)
hkeys student
  • 获取一个属性的值
hget key property
// 例: 获取 student 键的 name 属性的值
hget student name
  • 获取多个属性的值
hget key property1 property2...
// 例:获取 student 的 name 和 age 属性
hget student name age
  • 获取所有属性的值
hvals key
// 例: 获取 student 的所有属性的值(不通过键来获取指定的值,直接获取所有属性的值)
hvals student
  • 删除 hash 的键和值(删除一个或多个属性)
hdel key property1 property2...
// 例: 删除 hash 中的 student 键值 所对应的 name 和 age 属性
hdel student name age

3.list 类型

  • 简介:列表的类型为 String ,按照插入顺序排序
  • 在左,右侧插入数据(也就是创建一个新的列表)
// 左侧:
lpush key value1 value2 ...
// 右侧:
rpush key value1 value2 ..
// 注:从左侧插入数据,得到的列表的顺序和插入数据的顺序相反
  • 在指定元素前或后插入数据(before , after)
// key 列表,在 oldvalue 之前 插入新的元素 newvalue
linsert key before  oldvalue newvalue
// key 列表,在 oldvalue 之后 插入新的元素 newvalue
linsert key after oldvalue newvalue 
  • 返回列表里指定范围内的元素
// start , stop 为元素下标的索引,索引下表从 0 开始
lrange key start end
// 例: 获取键值为 test_list 的列表里的所有元素
lrange test_list 0 -1
  • 设置指定索引位置的元素值
// index 表示索引的下标值,将下标位置的额值替换成 newvalue 的值
lset key index newvalue
  • 删除指定元素
// 将列表前 count 次出现值为 value 的元素删除
// count > 0 : 从表头到表尾删除
// count < 0 : 从表尾到表头删除
// count = 0 :删除所有的元素
lrem key count value
// 例:设 test_list 中存在 【1,2 ,3,3,4,3,2,1】,删除从表尾到表头第 2 次出现的 3
lrem  test_list -2 3

4.set 类型

  • set 类型的特点:
1. set 是无序集合
2. 元素为 String 类型
3. 元素是唯一的,不可重复
4. set 类型集合,没有修改操作,类似 python 中的元组
  • 增加元素
sadd key element1 element2 ...
// 例:向 number 集合中添加 1 , 2 , 3 元素
sadd number 1 2 3
  • 获取所有的元素
smembers key
// 例:获取 number中的所有元素
smembers number
  • 删除指定元素
srem key
// 例: 删除 number 中的 1 元素
srem number 1

zset 类型

  • zset 类型的特点:
1. zset 是有序的集合
2. 元素类型都为 String
3. 元素是唯一的,不允许重复
4. 每一个元素都会关联一个 double 类型的 score,表示权重,通过权重对集合中的元素进行从小到大的排序
5. 没有修改操作
  • 增加元素
zadd key score1 element1 score2 element2  score3 element3...
// 例: 向 member 集合中添加 zhangsan,lisi,wangwu,权重分别为3,4,5
zadd member 3 zhangsan 4 lisi 5 wangwu
// 存入的顺序为 权重值的从小到大排序
  • 获取
// 通过 key 值的下标获取
zrange key start end
// 通过 权重 来获取,获取权重在 low 和 up 之间的元素
zrangebyscore key 3 5
// 返回 key 中元素的权重值
zscore key element 
  • 删除
// 删除指定元素
zrem key element1 element2
// 删除权重在指定范围内的元素值
zremrangebyscore key low up
// 例:删除 member 集合中权重在 3 到 5 之间的元素
zremrangebyscore member 3 5

三. 与python交互

1. 编写 python 脚本文件连接 Redis 数据库

from redis import * 
if __name__ == "__main__":
	try:
		# host:指定的服务器端口,默认为 localhost
		# port:指定的端口号,默认为6379
		# db:所选择的数据库,默认为第 0 号数据库
		re = StrictRedis(host='localhost',port=6379,db=0)
		# 接下来就可以用 re . 的 方法对数据进行 增删改查了

		# 设置键为 name , value 为 xiaohei
		result1 = re.set("name","xiaohei")
		# 获取 name 的值
		result2 = re.get("name")
		# 修改 name 键的值为 xiaobai
		result3 = re.set("name","xiaobai")
		# 删除 name 键值
		result4 = re.delete("name")
		# 获取所有的 键
		result5 = re.keys()
	except Exception as e:
		print(e)

2.django 项目中用 redis 来存储 session 信息

  • 第一步 : 先安装包 django-redis-sessions, 命令: pip install django-redis-sessions
  • 第二步 : 修改 Django 项目下的 settings 文件 , 添加如下内容
# 设置使用 redis 存储 session 信息
SESSION_ENGING = 'redis_sessions.session'
# redis 服务的ip地址
SESSION_REDIS_HOST = 'localhost'
# redis 服务的端口号
SESSION_REDIS_PORT = 6379
# redis 使用的哪个数据库
SESSION_REDIS_DB = 2
# redis 密码
SESSION_REDIS_PASSWORD = ''
# # redis存储信息前缀
SESSION_REDIS_PREFIX = 'session'
  • 第三步 : 测试
# 在 views 中编写视图
from django.http import HttpResponse
def set_session(request):
	"""设置session信息"""
	username = request.POST.get('username')
	request.session['username'] = username
	return HttpResponse('设置session信息')

def get_session(request):
	"""获取session信息"""
	username = request.session['username']
	return HttpResponse(username)
# 在 urls 配置中, 配置 url 地址
url(r'^set_session$', views.set_session),
url(r'^get_session$', views.get_session),
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值