#Linux 下安装
1.安装
-----
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar xzf redis-2.8.17.tar.gz
cd redis-2.8.17
make
2.启动redis服务
------
make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:
$ cd src
$ ./redis-server
注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。
$ cd src
$ ./redis-server ../redis.conf
-----------
redis.conf 是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
requirepass heng #requirepass 配置密码 heng
------------
启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:
$ cd src
$ ./redis-cli --raw 加raw防止中文乱码
redis> AUTH heng #配置密码后要登录
redis> set foo bar
OK
redis> get foo
"bar"
详细请参考:https://www.runoob.com/redis/redis-tutorial.html
--------
#设置密码
通过以下命令查看是否设置了密码验证:
CONFIG get requirepass
1) "requirepass"
2) ""
默认情况下 requirepass 参数是空的,这就意味着你无需通过密码验证就可以连接到 redis 服务。
你可以通过以下命令来修改该参数:
127.0.0.1:6379> CONFIG set requirepass "heng"
OK
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) "heng"
设置密码后,客户端连接 redis 服务就需要密码验证,否则无法执行命令。
#密码登录
AUTH heng
3.常用命令
help set 查看命令详细
keys * # * 查看所有key ,a* 查以a开头的key
#删除 (注:一般都是成功返回 1 失败返回 0)
del key
#检查key是否存在
exists key
#返回 key 所储存的值的类型
type key
#修改 key 的名称
rename key newkey
#仅当 newkey 不存在时,将 key 改名为 newkey
renamenx key newkey
#为给定 key 设置过期时间,以秒计
EXPIRE key 3
#移除 key 的过期时间,key 将持久保持。
PERSIST key
#切换到指定的数据库db 注:默认是16个,最多填15,默认是0
select 1
#将当前数据库的 key 移动到给定的数据库 db 当中。注:两个数据库有相同的 key 则移动失败
MOVE key 1
#以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)
TTL key
#从当前数据库中随机返回一个 key
RANDOMKEY
#删除当前数据库所有 key
FLUSHDB
#查看服务是否运行
PING
#关闭当前连接
QUIT
#同步保存数据到硬盘
SAVE
#删除所有数据库的所有key
FLUSHALL
#删除当前数据库的所有key
FLUSHDB
# string
--------
#设置
set key value 如:ex 3
参数:设置超时时间: ex 秒 px 毫秒 nx 没有值时才设置 xx 只有有值才设置
mset key value key value #批量设置
getset key value #设置的同时可以得到旧数据
setrange key 3 value #从第三位后设置
#获取
get key
mget key key #批量获取
getrange key 0 3 #切片获取
#二进制操作用法(可用于根据id判断是否登录,登录设置为1,原理是全部设为零根据位数设置获取对应值)
setbit user 3 1 #设置二进制第三位为1
getbit user 3 #获取位数值 #当偏移量 OFFSET 比字符串值的长度大,或者 key 不存在时,返回 0
bitcount user #获取设置为1的个数
#将 key 中储存的数字值增一
incr key
# Hash
---------
hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
#设置
hset obj key value # obj 对象名
#批量设置
hset obj key value key value
#获取
hget obj key
hmget obj key key #批量获取
hgetall obj #获取所有
#获取对象key数
hlen obj
#获取对象key
hkeys obj
#获取对象key值
hvals obj
#判断是否存在
hexists info key
#删除哈希表 key 中的一个或多个指定字段
hdel info key key
#设置自增
hincrby obj id 1
#模糊查询
hscan obj 0 match *a* #查询obj里从0开始查找带a的key
---------
# list
#添加
lpush arr value vlaue # arr 列表名
lpushx arr value # 只有arr存在才能添加
#获取 arr 0 到 10 的数据
lrange arr 0 10
#获取列表长度
llen key
#通过索引获取列表中的元素
lindex key index
#在列表的元素前或者后插入元素(before | after)
linsert arr before 11 10 #把10插到11之前
#设置值
lset arr 0 11 # 0 是索引 11 是值
#删除
lrem arr 0 11 #删除所有值为11的数据, 0 是所有,大于0是从头往后搜几位,小于0是从后往前几位
#移出并获取列表的第一个元素
lpop key
#移除列表的最后一个元素,返回值为移除的元素
rpop key
---------
# set
#添加
sadd key value value
#获取集合的成员数
scard key
#返回集合中的所有成员
smembers key
#移除集合中一个或多个成员
srem key value vlaue
#返回给定所有集合的差集
sdiff key1 key2
#返回给定所有集合的交集
sinter key1 key2
#返回所有给定集合的并集
sunion key1 key2
#判断 member 元素是否是集合 key 的成员
sismember key member
#返回集合中一个或多个随机数
srandmember myset1 2
#将 member 元素从 source 集合移动到 destination 集合
smove source destination member
#返回给定所有集合的差集并存储在 destination 中
SDIFFSTORE destination key1 [key2]
#返回给定所有集合的交集并存储在 destination 中
SINTERSTORE destination key1 [key2]
#所有给定集合的并集存储在 destination 集合中
SUNIONSTORE destination key1 [key2]
--------
#有序集合
#向有序集合添加一个或多个成员,或者更新已存在成员的分数
zadd key 1 one 2 two # 1 2 是设置权重分数
#获取有序集合的成员数
ZCARD key
#计算在有序集合中指定区间分数的成员数
ZCOUNT key min max
#移除有序集合中的一个或多个成员
ZREM key member [member ...]
#返回有序集合中指定成员的索引
ZRANK key member
#返回有序集中,成员的分数值
ZSCORE key member
#返回成员分数
zscore
#通过索引区间返回有序集合指定区间内的成员
zrange key 0 -1
#返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
ZREVRANK key member
#返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。
ZRANGEBYSCORE salary 5000 4000001 # 显示工资大于 5000 小于等于 400000 的成员
--------
#订阅发布
#订阅一个或多个符合给定模式的频道
PSUBSCRIBE pattern [pattern ...] 例:psubscribe test
#订阅给定的一个或多个频道的信息
SUBSCRIBE channel [channel ...] 例:subscribe test
#查看订阅与发布系统状态,由活跃频道组成的列表
PUBSUB subcommand [argument [argument ...]] 例:pubsub test
#将信息发送到指定的频道
PUBLISH channel message 例:publish test '老铁666'
#退订所有给定模式的频道
PUNSUBSCRIBE [pattern [pattern ...]] 例:punsubscribe test
#指退订给定的频道
UNSUBSCRIBE [channel [channel ...]] 例:unsubscribe test
---------------
python连接redis
pip3 install redis #安装
------------
# 普通连接
import redis
r=redis.Redis(host="192.168.219.129",port=6379,password="heng",db=0)
r.set("test","hello",ex=5) # ex代表秒,px代表毫秒
val = r.get("test")
print(val)
# 连接池管道方式,相当于事务(效率最高)
pool = redis.ConnectionPool(host="192.168.219.129", port=6379,password="heng",max_connections=1024)
r = redis.Redis(connection_pool=pool)
pipe=r.pipeline(transaction=True)
pipe.get("test")
pipe.keys("*")
v=pipe.execute() #执行
print(v)
-----
#发送订阅用法
import redis
class RedisHelper:
def __init__(self):
pool = redis.ConnectionPool(host="192.168.219.129", port=6379,password="heng",db=0)
self.__conn=redis.Redis(connection_pool=pool)
self.chan_sub='test1'
self.chan_pub='test1'
def publish(self,msg): #将信息发送到指定的频道
self.__conn.publish(self.chan_pub,msg)
return True
def subscribe(self): #订阅给定的一个或多个频道的信息
pub=self.__conn.pubsub() #初始化监听
pub.subscribe(self.chan_sub) #设置地址
pub.parse_response() #准备监听
return pub
obj=RedisHelper()
#发送
obj.publish('测试数据')
#监听
redis_sub=obj.subscribe()
while True:
msg=redis_sub.parse_response() #阻塞模式,没消息就等待
print('message=>',msg)
------------
django里使用redis
#安装
pip install django-redis
# settings.py中加入以下内容
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379', #连接ip
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": "password123", #密码
},
},
}
#使用
from django.core.cache import cache #引入缓存模块
val = cache.get("test")
print(val)
-----------
#Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统
#Celery的安装配置
pip install celery
网友评论