redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
yum install redis
ps -ef | grep redis
service redis start
redis-cli -p 6379 -h 127.0.0.1
quit
service redis stop
(1)添加
将字符串值value关联到key。如果key已经存在值,set命令会覆盖之前的值。默认的过期时间是永久。
set username derek
(2)删除
del username
(3)设置过期时间
#两种方式都可以
set username derek EX 10 #10s
#或者
setex username 10 derek
*(4)查看过期时间
ttl username
(5)查看当前redis中的所有key
keys *
(1)在列表左边添加元素
lpush username derek
将值value插入到列表key的表头。如果key不存在,一个空列表会被创建并执行lpush操作。当key存在但不是列表类型时,将返回一个错误。
(2)在列表右边添加元素
rpush username Tom
将值value插入到列表key的表尾,如果key不存在,一个空列表会被创建并执行lpush操作。当key存在但不是列表时,将返回一个错误。
(3)查看列表中的元素
lrange username 0 -1 #起始到末尾,索引
返回列表key中指定区间内的元素,区间以偏移量start和stop指定。
(4)移除列表中的元素
#移除并返回列表key的头元素
lpop username
#移除并返回列表key的尾元素
rpop username
(5)指定返回第几个元素
将返回key这个列表中,索引为index的这个元素
#lindex key index
lindex username 1
(6)获取列表中的元素个数
llen username
(7)删除指定的元素
lrem users 2 derek # 2,代表删除的数量
lrem users 0 derek # 删除所有数量
根据参数count的值,移除列表中与参数value相等的元素。count的值可以试一下几种:
(1)添加元素
sadd users derek jack
(2)查看元素
smembers users
(3)移除元素
srem users derek
(4)查看集合中的元素个数
scard users
(5)多个集合之间的交集、并集和差集
sinter set1 set2 #交集
sunion set1 set2 #并集
sdiff set1 set2 #差集
(1)添加一个新值
hset key field value
hset person name derek
将哈希表key中的域field的值设为value。如果key不存在,一个新的哈希表被创建并进行HSET操作。如果域field已经存在哈希表中,旧值将被覆盖。
(2)获取哈希中的field对应的值
hget person name
(3)删除field中的某个field
hdel person name
(4)获取某个哈希中所有的field和value
hgetall person
(5)获取某个哈希中所有的field
hkeys person
(5)获取某个哈希中所有的值
hvals person
(6)判断哈希中是否存在某个field
hexists person name
(7)一次设多个
hmset person name derek age 18 hight 175
(8)长度
hlen person
redis事务可以一次执行多个命令,事务具有以下特征:
(1)开启一个事务
multi
以后执行的所有命令,都将在这个事务中执行。
(2)执行事务
exec
会将在multi和exec中的操作一并提交
(3)取消事务
discard
会将multi后的所有命令取消
(4)监视一个或者多个key
watch key .......
监视一个或多个key,如果在事务执行之前这个key被其它命令所改动,那么事务将被打断。
(5)取消所有key的监视
unwatch
(1)给某个频道发布消息
publish channel message
(2)订阅某个频道的消息
subscribe channel
RDB同步机制
AOF同步机制
(1)设置密码
vim /etc/redis.conf
打开配置文件,然后按“/”搜索“requirepass”,再按‘n’找到‘requirepass password’,取消注释,在后面加上要设置的密码 requirepass password 123456.
(2)本地连接
redis-cli -p 6379 -h 127.0.0.1 -a 123456
可以在连接的时候,通过‘-a’参数指定密码进行连接,也可以先登录上去,然后再使用‘auth password’命令进行授权。
(3)其它机器连接redis
如果想让其它机器连接本机的redis服务器,那么应该在‘redis.conf’配置文件中,指定“bind 本机的ip地址”,这样别的机器就能连接成功了。
vim /etc/redis.conf
按‘/’搜索‘bind’,后面指定自己机器的ip
(1)安装
pip install redis
(2)连接
from redis import redis
cache = Redis(host="139.199.131.146",port=6379,password=123456)
(3)字符串操作
cache.set('uers','derek')
cache.get('users')
cache.delete('users')
(4)列表操作
cache.lpush('users','tom')
print(cache.lrange('users',0,-1))
(5)集合的操作
cache.sadd('group','CEO')
print(cache.smembers('group'))
(6)哈希的操作
cache.hset('person','name','derek')
print('cache.hgetall('person')')
(7)事务的操作
pip = cache.pipeline()
pip.set('username','derek')
pip.set('password','123456')
pip.execute()