标签:点击 取值 根据 memcach info 结束 redis code push
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库,随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
redis是业界主流的key-value nosql 数据库之一。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
异常快速 : Redis是非常快的,每秒可以执行大约110000设置操作,81000个/每秒的读取操作。
支持丰富的数据类型 : Redis支持最大多数开发人员已经知道如列表,集合,可排序集合,哈希等数据类型。
操作都是原子的 : 所有 Redis 的操作都是原子,从而确保当两个客户同时访问 Redis 服务器得到的是更新后的值(最新值)。
redis源码安装
去官网下载 https://redis.io/
源码安装redis
1.wget下载下来
2.解压 tar
3.进入redis源码包目录
4.make prefix=/data/redis install 指定安装路径
5. mkdir -p /data/redis/conf
mkdir -p /data/redis/logs
cp redis.conf /data/redis/conf
修改redis.conf 参数
配置文件主要配置
port
bind 0.0.0.0
daemonize yes 放在后台运行
LOGfile
可以通过打开 maxmemory 最大使用内存指令来防止 redis 使用过多 RAM:
动不动把自己干掉 能用多大就多大 拼命往里写
设置最大内存
538 # maxmemory <bytes>
启动redis
redis-server /data/redis/conf/redis.conf
查看 redis 是否还在运行
redis-cli
redis 127.0.0.1:6379> ping PONG
sudo pip install redis or sudo easy_install redis or 源码安装 详见:https://github.com/WoLpH/redis-py
1、操作模式
redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。
import redis r = redis.Redis(host=‘10.211.55.4‘, port=6379) r.set(‘foo‘, ‘Bar‘) print r.get(‘foo‘)
2、连接池
redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。
import redis pool = redis.ConnectionPool(host=‘192.168.0.91‘,port=6379) r = redis.Redis(connection_pool=pool) r.set(‘name‘,‘ming‘) print(r.get(‘name‘))
redis中的String在在内存中按照一个name对应一个value来存储。如图
set(name, value, ex=None, px=None, nx=False, xx=False)
在Redis中设置值,默认,不存在则创建,存在则修改
参数:
ex,过期时间(秒)
px,过期时间(毫秒)
nx,如果设置为True,则只有name不存在时,当前set操作才执行
xx,如果设置为True,则只有name存在时,岗前set操作才执行
setnx(name, value)
设置值,只有name不存在时,执行设置操作(添加)
setex(name, value, time)
# 设置值 # 参数: # time,过期时间(数字秒 或 timedelta对象)
psetex(name, time_ms, value)
# 设置值 # 参数: # time_ms,过期时间(数字毫秒 或 timedelta对象)
mset(*args, **kwargs)
批量设置值 如: mset(k1=‘v1‘, k2=‘v2‘) 或 mget({‘k1‘: ‘v1‘, ‘k2‘: ‘v2‘})
get(name)
获取值
mget(keys, *args)
批量获取 如: mget(‘ylr‘, ‘wupeiqi‘) 或 r.mget([‘ylr‘, ‘wupeiqi‘])
getset(name, value)
设置新值并获取原来的值
setrange(name, offset, value)
# 修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加) # 参数: # offset,字符串的索引,字节(一个汉字三个字节) # value,要设置的值 127.0.0.1:6379> get name1 "jack" 127.0.0.1:6379> setrange name1 0 2 (integer) 4 127.0.0.1:6379> get name1 "2ack" 127.0.0.1:6379> setrange name1 0 bb (integer) 4 127.0.0.1:6379> get name1 "bbck" 127.0.0.1:6379> setrange name1 1 p (integer) 4 127.0.0.1:6379> get name1 "bpck"
getrange(key, start, end)
# 获取子序列(根据字节获取,非字符) # 参数: # name,Redis 的 name # start,起始位置(字节) # end,结束位置(字节) # 如: "武沛齐" ,0-3表示 "武" 127.0.0.1:6379> get name1 "bpck" 127.0.0.1:6379> getrange name1 0 2 "bpc"
标签:点击 取值 根据 memcach info 结束 redis code push
原文地址:http://www.cnblogs.com/mingerlcm/p/7717568.html