redis数据库-VUE创建项目

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模块
'''
#拿到redis连接
conn = redis.Redis(host='localhost', port=6379,db=0)
# # 存
# conn.set('age','18')
# # 取
# name = conn.get('name')  # bytes类型
# print(name)

# --------------字符串的操作----------------------------
# set(name,value,ex=None,px=None,nx=False,xx=False)
# nx: 只有name不存在时,set才执行,否则不执行 (设置为true)
# xx: 设为true, 只有name存在时,set才能执行
# conn.set('alex',14,8)  # 8秒后自动删除

# setnx(name,value)  # 调了set,指定nx=True
# setex(name,time,value)  # 设置超时时间
# psetex(name,time_ms,value) # 设置超时时间,毫秒

# conn.mset(*args,**kwargs)  # 批量设置值
# conn.mset({'k3':'v3','k4':'v4'})

# conn.mget(['name','age'])  # 批量获取
# conn.mget('name','age')

# conn.getset('name','iris')  # 取出原来的值改成iris
# conn.getrange(key,start,end)  #获取子序列
# conn.getrange('name',0,2)  #全闭区间

# conn.setrange(name,offset,value)
# conn.setrange('name',1,'p')  # name的第二位换成'p'

# conn.strlen('name')  # 统计name长度

# 访问量,点赞量,点踩量等可以用这个设置
# conn.incr('age',amount=1)  # 程序运行一次,age增加1
# conn.incrbyfloat('age',amount=1.1)
# conn.decr('age',amount=1)  # 减1

#conn.append('age','pp')  # 追加拼接

# -----------redis 连接池 -- 做缓冲 --- 单例实现--------------------(连接池连接)
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.lpush('l1',*[1,2,3,'kdakhf'])
# conn.lpush('l2',1,2,3,4)

# #rpush : 右侧插入数据
# conn.rpush('l1','fjoa')

# #lpushx : 在name对应的list中最左侧添加元素(name存在时才添加)
# conn.lpushx('l2','5')

# # 返回列表长度
# conn.llen('l2')

# # linsert 插入值
# # linsert(name,where,refvalue,value),在l2中,value 3前插入
# conn.linsert('l2','BEFORE','3','JAOJ')

# 将位置2 上的内容换成7777(位置从0开始)
# conn.lset('l2',1,'7777')

# #删除指定的值,第二个参数:0(所有的7777都删除)1(从前到后找到第一个) 2 (删两个)-1(从后往前删一个)
# conn.lrem('l2',0,'7777')

# # 从左侧移除一个
# conn.lpop('l2')

# # 取值,第三个位置上的值
# conn.lindex('l2',2)

# # 取区间的值,双闭区间
# print(conn.lrange('l2',0,1))  #[b'4', b'JAOJ']

# # 取出列表中所有数据
# conn.lrange('l2',0,10000000000)
# conn.lrange('l2',0,conn.llen('l2'))

# # ltrim 移除不在该区间[0,2]之内的值
# conn.ltrim('l2',0,2)

# # rpoplpush(src,dst): 取出最右侧数据,添加到新列表的左侧

# # blpop, 每次删除一个值,没有值的时候就阻塞住,等着直到有数据过来就取出来
# # 一个程序爬连接,一个连接取链接(简单的分布式)
conn.blpop('l2')

字典操作(基本)

Hash操作,redis中的hash在内存中的存储格式:
name ---------- hash
n1   ---------- k1->v1 (v1必须是数字或者字符串,不能是列表或字典)

# # 字典操作 n1 = { "name":"egon"}
#  name不存在则添加,存在修改
# conn. hset('n1',"name","owo")

# name不存在创建,存在不改变
# conn.hsetnx('n1','age','18')
#
# # hmset(name,mapping)  批量设置
conn.hmset('n5',{'name':'lily','age':100})
# conn.hmset('n3',{'name':{'lqz':'40'},'age':18}) # 错误!! 因为value只支持数字或字符
#
# # hget
# conn.hget('n2','name')
#
# hmget(name,keys)
# conn.hmget('n2',['name','age'])
# conn.hmget('n2','name','age')
#
# #hgetall 取所有,注意:如果不知道数据库中的数据量,慎用hgetall
# print(conn.hgetall('n2'))
#
# # 键值对的个数
# conn.hlen('n2')
#
# # 取出所有的键
# conn.hkeys('n2')   #[b'name', b'age']
# conn.hvals('n2')  #[b'lqz', b'18']

# # 返回true false,判断键是否存在
# conn.hexists('n2','ddd')

# # 删除
# conn.hdel('n2','name','age')

# # 自增
# conn.hincrby('n1','age',amount=3)

hscan(name,cursor=0,match=None,count=None)

# 增量式迭代获取,hscan可以试想分片的获取数据,并非一次性将数据全部获取完,防止内存爆满
参数:
    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)-- 字典

# 利用yield封装hscan创建生成器,实现分批去redis中获取数据
# conn.hscan('n1',cursor=0,match=None,count=300) 每次取出300个
参数:
    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:
    #每次取出count 个
    cursor, data = self.hscan(name, cursor=cursor,match=match, count=count)
    #for没循环一次,取出1个,直至data取完为止
    for item in data.items():
         yield item

自定义增量迭代 --- 列表中

# 取出全部数据方式一:
# ret = conn.lrange('l1',0,10)
# 方式二: 自定义
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) 不管数据类型
conn.delete('name','age')
# 判断键值是否存在, 结果为存在的数量
conn.exists('n1','n2')
# keys
KEYS * 匹配数据库中所有的key
KEYS h?llo  例:hello,hallo,hxllo
KEYS h*llo  例:hllo, heeelo
keys h[ea]llo  例 hello or hallo
ret = conn.keys('n?')
# expire(name,time)  为某个name 设置超时时间
# rename(src,dst) 对name 重命名
# move(name,db) 将某个name移到指定db下
# randomkey() 随机获取一个name
# type(name) 对应的类型
# scan(cursor=0,match=None,count=None)
# scan_iter(match=None,count=None)

管道

# 将内容打包好一次性执行execute, 模拟事务
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

# 方式一:
# utils文件夹下,新建redis_pool.py
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 中配置
# redis配置,缓存以后也用redis
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}
            # "PASSWORD": "123",
        }
        'aa':{}
    }
}
#视图函数中
from django_redis import get_redis_connection   # get_redis_connection就是一个链接池
conn = get_redis_connection('default')   # CACHES中配置的
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项目,
vue create 项目名字
--要提前进入项目根目录, 选择自定义方式创建项目,选Router, Vuex插件
-- settings -- plugins -- vue.js安装
# 启动/停止项目
-- npm run serve / ctrl+c (要提前进入根目录)
# 打包项目
-- npm run build  (要在项目根目录下进行打包操作)

# 开发vue 一般不用pycharm,用webstrom.....

# 复制别人的vue项目,复制除了node_modules以外的其他
# cmd进入项目目录,npm install 

创建项目参数:
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原型,作为全局的属性,在任何地方都可以通过this.$cookie进行访问
Vue.prototype.$cookie = VueCookie

# 持久化存储val 的值到cookie中
this.$cookie.set('val',this.val)
#获取cookie中的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: 项目依赖

原文地址:https://www.cnblogs.com/Afrafre/p/10651253.html

时间: 2024-10-08 03:57:50

redis数据库-VUE创建项目的相关文章

vue创建项目(推荐)

上一节我们介绍了vue搭建环境的情况,并使用一种方式搭建了一个项目,在这里为大家推荐另一种创建项目的方式. vue init webpack-simple vuedemo02 cd vuedemo02 cnpm install / npm install npm run dev 最后在浏览器输入:localhost:8000即可查看效果 原文地址:https://www.cnblogs.com/songtianfa/p/11677876.html

vue创建项目初始化及基本配置

目录 创建新项目初始化 vue的ajax插件: axios 1)安装插件(一定要在项目目录下): 2)在main.js中配置: 3)在任何一个组件的逻辑中发送ajax请求: CORS跨域问题(同源策略) Vue配置ElementUI Vue配置bs环境 安装插件 创建新项目初始化 node_modules不需要动 public不动 src中在assets中创建css js 和img文件夹 router文件夹中的index.js只保留一个home的路由配置 App.vue只留五行代码即可 Home

vue创建项目报错显示vue 和 vue-template版本不同

既然是版本不一致,那么只需要把vue与vue-template-compiler的版本更新为一致的就行了 第一种办法: 更新vue-template-compiler到与vue同版本 把vue-template-compiler卸载(cnpm uninstall vue-template-compiler), 再重新安装一个与vue版本一致的vue-template-compiler(cnpm install [email protected]报错中提示的vue-template-compile

vue.js在windows本地下搭建环境和创建项目

Vue.js是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用. 首先vue.js的作者是中国人,所以说他是国产的,吸收了google的angular.js和facebook的react.js的特性,摒弃了jquery传统的DOM操作,采用数据绑定和指令等概念,可以说是未来WEB端开发的

(Windows Maven项目)Redis数据库的安装和操作实现

Redis是一个内存数据库,他会把你写入当中的数据缓存到内存中,之后会周期性的往磁盘中写入.这篇文章中介绍的是在Windows环境下利用Maven工具编译运行Java文件实现Redis数据库的操作.         首先.我们须要下载Redis工具:http://redis.io/download,之后解压就能够了.我们会看到解压的文件夹下存在着这样一些文件: 当中,两个可运行文件须要考虑,redis-server.exe/redis-cli.exe.它们各自是redis服务和redisclie

SSM实战——秒杀系统之创建项目、管理依赖、设计数据库

注:本项目使用Myeclipse开发. 一:项目创建 1:使用Myeclipse创建一个web project,命名为MySeckill,并转换为Maven项目. 2:创建项目文件目录如下: 上面四个包分别管理:源代码.源代码资源(配置文件).测试代码.测试代码资源(配置文件) 3:在pom.xml添加SSM框架所需依赖包: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.

新手入门vue 使用vue-cli创建项目

本文是针对对于完全没有了解过vue 和npm,连运行环境和项目构建的都不会的小白,对于前端老司机的就不用看了,浪费时间. 使用npm 与vue-cli 构建vue 项目 第一步:安装运行环境(node与npm) nodeJ官网:http://nodejs.cn/ 下载安装包( 安装) 安装完成后,需要检测是否安装成功 使用命令行cmd  打开dos 黑窗口,运行 node  -v 和 npm –v,出现版号说明安装成功 注(npm 是node自带的,在安装node时已经安装了) 如何升级npm

Vue 安装环境创建项目

vue 是一个单页面框架,基于模块化组件化的开发模式. 搭建开发环境之前必须要安装node.js,然后安装vue的脚手架工具(命令行工具)win + R 输入npm install  --global vue-cli(慢)或者cnpm install  --global vue-cli(快) 创建项目,vue init webpack  vuedemo01 (创建一个基于webpack为模版的命名为vuedemo01的项目) 1.你的名字是vuedemo01么 2.你的项目的描述是什么 3.作者

vue搭建环境并创建项目

1.>npm install @vue/cli -g 2.创建项目A a.>vue ui b.在弹出的管理界面创建项目 或 a.npm install -g @vue/cli-init b.vue init webpack myapp //myapp:项目名称 visual code中添加辅助插件: js-css-html formatter html css support debugger for chrome auto close tag vetur 原文地址:https://www.c