redis数据库
'''
关系型数据库: mysql, oracle
非关系型数据库(nosql): redis,mongodb (没有表的概念) key-value
mongodb: json 数据--存储在硬盘上
redis: 存在内存中 --- 速度最快
用途:
--做缓存
--session数据
--游戏排行榜
--对速度要求高的数据的存储
-- 消息队列
'''
redis VS Memcached
-- redis 支持五大数据类型 : 字符串| 列表| 字典 | 集合| 有序集合
-- redis 支持持久化
-- redis 单线程,单进程,但速度也非常快
-- redis 支持事务,操作都有原子性
-- Memached不能持久化,只支持字符串
数据类型:
redis = {
k1:"123" , 字符串
k2:[1 ,2 ,3 ,4 ], 列表
k3:{"name" :'egon' ,'age' :19 } 字典
k4:{1 ,2 ,3 }, 集合
k5:{('lqz' ,18 ),('egon' ,33 )} 有序集合
}
命令行操作redis:
将路径添加至环境变量,然后命令行: redis-cli
set name lqz | get name
python 操作 redis(普通连接)
1. pycharm 中安装redis
import redis
'''
文件不能起名redis,否则找不到redis模块
'''
conn = redis.Redis(host='localhost' , port=6379 ,db=0 )
1. 单例:新建一个模块conn.pool.py
POOL= redis.ConnectionPool(host,port,max_connections)
2. 导入上述模块
from conn_pool import POOL
conn = redis.Redis(connection_pool=POOL)
conn.get('name' )
django 中使用
1. 新建模块 conn_pool.py
2. views视图函数中
from app.conn_pool import POOL
def test (request ):
conn = redis.Redis()
conn.set ('token' ,'afa9j' ,5 )
列表操作
import redis
conn = redis.Redis()
conn.blpop('l2' )
字典操作(基本)
Hash操作,redis中的hash 在内存中的存储格式:
name ---------- hash
n1 ---------- k1->v1 (v1必须是数字或者字符串,不能是列表或字典)
conn.hmset('n5' ,{'name' :'lily' ,'age' :100 })
hscan(name,cursor=0,match=None,count=None)
参数:
name : redis 的name
cursor: 游标(基于游标分批获取数据)
match: 匹配指定key
count: 每次分片最少个数
ret = conn.hscan('n1' ,cursor=0 ,match=None ,count=300 )
print (len (ret[1 ]))
常用 hscan_iter(name,match=None,count=None)-- 字典
参数:
match: 匹配指定key, 默认None ,表示所有的key
count: 每次分片最少获取的个数
for i in conn.hscan_iter('n1' ,count=1000 ):
print (i)
源码:
def hscan_iter (self, name, match=None , count=None ):
cursor = '0'
while cursor != 0 :
cursor, data = self.hscan(name, cursor=cursor,match=match, count=count)
for item in data.items():
yield item
自定义增量迭代 --- 列表中
def l_scan (name,count=1000 ):
cursor = 0
while cursor <= conn.llen(name):
ret = conn.lrange(name,cursor,count)
cursor += count
for i in ret:
yield i
for i in l_scan('l1' ,100 ):
print (i)
其他操作
conn.delete('name' ,'age' )
conn.exists('n1' ,'n2' )
KEYS * 匹配数据库中所有的key
KEYS h?llo 例:hello,hallo,hxllo
KEYS h*llo 例:hllo, heeelo
keys h[ea]llo 例 hello or hallo
ret = conn.keys('n?' )
管道
import redis
pool=redis.ConnectionPool(host,port)
conn = redis.Redis(connection_pool=pool)
pipe = conn.pipeline(transaction=True )
pipe.multi()
pipe.set ('name' ,'alex' )
pipe.set ('age' ,'18' )
pipe.execute()
小结: Django中使用redis
import redis
POOL = redis.ConnectionPool(host='127.0.0.1' , port=6379 ,password='1234' ,max_connections=1000 )
import redis
from django.shortcuts import render,HttpResponse
from utils.redis_pool import POOL
def index (request ):
conn = redis.Redis(connection_pool=POOL)
conn.hset('kkk' ,'age' ,18 )
return HttpResponse('设置成功' )
def order (request ):
conn = redis.Redis(connection_pool=POOL)
conn.hget('kkk' ,'age' )
return HttpResponse('获取成功' )
安装django-redis模块
settings 中配置
CACHES = {
"default" : {
"BACKEND" : "django_redis.cache.RedisCache" ,
"LOCATION" : "redis://127.0.0.1:6379" ,
"OPTIONS" : {
"CLIENT_CLASS" : "django_redis.client.DefaultClient" ,
"CONNECTION_POOL_KWARGS" : {"max_connections" : 100 }
}
'aa' :{}
}
}
from django_redis import get_redis_connection
conn = get_redis_connection('default' )
print (conn.hgetall('xxx' ))
VUE创建项目
1. cmd :进入要创建项目的目录 cd /d d:\aaa\bbb
2. 安装node.js: 官网下载 https://nodejs-org/zh-cn/ -- 其中包括了npm的安装
3. 安装cnpm : npm install -g cnpm --registry=https//registry.npm.taobao.org
3. 安装vue脚手架: cnpm install -g @vue/cli
4. 清空缓存处理:npm cache clean --force
vue create 项目名字
--要提前进入项目根目录, 选择自定义方式创建项目,选Router, Vuex插件
-- settings -- plugins -- vue.js安装
-- npm run serve / ctrl+c (要提前进入根目录)
-- npm run build (要在项目根目录下进行打包操作)
创建项目参数:
Babel: 将es6语法 解析成。。
TypeScript:es语法 -- 简称ts, 我们采用js,因此这里不选
Router: 路由
Vuex: 全局的单例,实现组件间通信的,里面的属性所有都能看到
CSS Pre-processors: 预编译语言(有逻辑的CSS)
Formatter: 规定代码格式规范
命令:
node --version
vue -V
vue-cookie
安装cookie的命令 : npm install vue-cookie --save
为项目配置全局 vue-cookie
import VueCookie from 'vue-cookie'
Vue.prototype.$cookie = VueCookie
this.$cookie.set ('val' ,this.val)
this.$cookie.get('val' )
axios(ajax)
安装axios 命令: npm install axios--save
为项目配置全局axios
import Axios from 'axios'
Vue.prototype.$ajax=Axios
methods:{
'init' :function(){
var _this = this
this.$http.request({
// 这个地址发送get请求,存在跨域问题,django 项目中配置中间件
url: 'http://127.0.0.1:7777/course/' ,
method:'get'
}).then(function(response){
//response.data才是真正要的数据
// console.log(response.data)
// 把返回的数据赋值给course_list
_this.course_list=response.data
})
}
VUE项目的目录结构
执行项目两种方式:
1. terminal: npm run serve
2. Edit-conf-- 加号---Scripts(serve)
目录结构:
node_modules : 项目依赖(依赖的第三方组件)
public:
favicon.ico: 网页图标
index.html: 主页面 (VUE只有一个页面)
src:
assets: 放静态文件
components: 小组件
views: 页面组件
App.vue: 主组件
main.js : 项目主入口js
router.js: 路由相关的,配置路由
store.js: vuex相关,状态管理器
package.json: 项目依赖
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!