本帖最后由 杰哥,我就服你 于 2018-11-8 13:31 编辑
nosql(not only sql)
D:一类新出现的数据库,不支持sql语句,以键值对形式存储数据
常用的产品种类:Mongodb,Redis,Hbase hadoop
Redis
D:是一个开源的使用ANISIC语言编写,支持网络,可基于内存也可持久化的日志型数据库。Redis还支持数据的备份,即master-slave模式的数据备份
优势:读取快,性能高;有丰富的数据类型,支持二进制String,Lists,Hashes等
操作原子性,还支持key过期,通知等特性。
应用场景:用来做缓存;用来实现特定功能,session共享,购物车,商品历史浏览记录
U:使用redis常用命令
下载
| wget http://download.redis.io/releases/redis-3.2.8.tar.gz
| 解压
| tar -zxvf redis-3.2.8.tar.gz
| 编译和安装(进入redis解压出来的根目录下
| sudo make install
| 安装完成后,进入目录/usr/local/bin中查看
| cd /usr/local/bin
ls -all
| 验证是否安装成功(不报错)
| sudo redis-server
| 查看已启动的redis-server
| ps -ef|grep redis-server
| 指定配置文件启动redis服务端
| sudo redis-server /etc/redis/redis.conf
| 停止
| sudo pkill -9 redis-server
| 客户端连接到redis服务器
| redis-cli
| 连接到固定主机端口
| redis-cli -h 主机 -p 端口 --raw(raw 查看中文)
| 切换数据库
| select 2
| 删除当前数据库中所有key
| flushdb
| 删除所有数据库中的key
| flashall
|
数据结构及操作行为:
redis是key-value的数据结构,每条数据都是一个键值对
键的类型是字符串,键不能重复
值的类型分为五种:①字符串string②列表list③集合set④有序集合zset⑤哈希hash
操作行为①保存②修改③获取④删除
操作数据库
有关键的命令
查找键
| keys * ---查找所有键
Keys *a* ---查找含a的键
| 判断键是否存在
| exists key(存在返回1,不存在返回0)
| 查看值的类型
| type key(五种类型)
| 删除键值对
| del key1 key2
| 设置过期时间
| setex key 有效时间(秒) value
| 设置有效时间
| expire key 有效时间(秒)
| 查看键的剩余有效时间
| ttl key (time to live)
|
字符串(string)的命令
设置键值(如果不存在为添加,如果存在为修改)
| set key value
| 设置多个键值
| mset key1 value1 key2 value2 ...
| 追加值
| append aa haha
| 查询值
| get key
| 根据多个键获取多个值
| mget key1 key2 ...
|
列表(list)的命令
从左侧插入数据
| lpush key value1 value2 …
结果[value2, value1]
| 从右侧插入数据
| rpush key value1 value2 …
结果[value1, value2]
| 插入一个元素
| linsert key before/after 现有元素 要插入的值
| 将列表中前count次出现的值为value的元素移除
| lrem key count value
(count大于0: 从头往尾移除;count小于0: 从尾往头移除;count = 0: 移除所有)
| 修改指定索引位置的元素值
| lset key index value
| 获取列表里指定范围内的元素
| lrange key 开始索引 结束索引 (闭区间)
| 截取列表里指定范围内的元素
| ltrim key 开始索引 结束索引
|
无序集合(set)的命令
增加元素
| sadd key member1 member2 ...
| 删除指定元素
| srem key member1 member2 ...
| 返回所有元素
| smembers key
|
有序集合(zset)的命令
D:每个元素都关联一个double类型的score,表示权重,通过权重将元素从小到大排序
添加元素
| zadd key score1 member1 score2 member2 ...
| 删除元素
| zrem key member1 member2 ...
| 删除权重在指定范围的元素
| zremrangebyscore key min max
| 获取指定范围的元素
| zrange key 开始索引 结束索引(支持负数)
| 获取score在指定范围内的元素
| zrangebyscore key min max
| 获取元素的score值
| zscore key member
|
对象(hash)的命令
设置单个属性
| hset key field value
| 设置多个属性
| hmset key field1 value1 field2 value2 ...
| 获取指定键所有的属性
| hkeys key
| 获取一个属性的值
| hget key field
| 获取多个属性的值
| hmget key field1 field2 ...
| 获取所有属性的值
| hvals key
| 删除hash键值
| hdel key field1 field2 ...
| 获取hash中属性的个数
| hlen key
|
Redis&python交互
U:①进入虚拟环境,安装redis包:pip install redis
②导包:from redis import *
③创建StrictRedis对象:sr = StrictRedis() ---默认主机和端口,如果不同需关键字参数指定。添加decoderesponse = True可以获取redis数据无需解码,否则是二进制数据
④增:rs.set('aa',11) 返回值布尔类型,如果保存成功返回True,否则False
删:re.delete('bb') 返回值是删除键值对的个数
改:re.set('aa',22) aa存在即修改,返回布尔类型
查:re.get('aa') 返回值是aa的值
Redis&Django交互
U:①安装django-redis包:pip install django-redis==4.8.0
②在django项目settings设置CACHES选项:
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/3", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "PASSWORD": "" # Redis密码,默认为空 } } }
③视图函数:
连接Redis数据库,返回一个StrictRedis对象,default表示上面配置
strict_redis=get_redis_connection('default'),可以不写,默认default
通过redis保存session数据
U:①安装包: pip install django-redis-sessions==0.5.6
②配置settings文件:
# 使用redis保存session数据 SESSION_ENGINE = 'redis_sessions.session' SESSION_REDIS_HOST = 'localhost' SESSION_REDIS_PORT = 6379 SESSION_REDIS_DB = 2 SESSION_REDIS_PASSWORD = '' SESSION_REDIS_PREFIX = 'session'
|
|