NoSQL数据库-Redis笔记

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

猜你喜欢

转载自www.cnblogs.com/heimaguangzhou/p/11635221.html