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'
更多技术资讯可关注:gzitcast