- redis文档:http://redisdoc.com
- redis是一个高性能的键值数据库。是当前最热门的的的NoSql数据库之一,也被人们称为数据结构服务器。
- redis应用:
1、高速缓存服务(用户经常访问的数据从数据库搬到内存)
2、实时排行榜
3、投票点赞
4、验证码服务
5、消息队列
等等应用场景… - 查看redis版本
redis-server --version
redis-cli --version - 查看redis进程
netstat -nap | grep redis - 启动redis
redis-server - 启动redis并且保持后台运行
redis-server > redis.log & - 启动redis更改端口
redis-server --port 1234 >redis.log & - 启动redis加上口令验证
redis-server --requirepass 26324636 > redis.log & - 查看后台任务
jobs - 客户端连接
redis-cli - 客户端连接其他人(指定主机,需要指定端口的话加上)
redis-cli -h 120.77.222.217 -p 1234 - 客户端验证身份
auth 26324636
字符串
- 设置键值对
set username effort - 获取键值对
get username - 追加
append username 123 - 设置键值对超时时间(30s之后自动消失)
set username zjw ex 30 - ps:设置手机号验证码
set 17866668888 567899 ex 300 - 查看指定键还剩多少时间
ttl 17866668888
哈希表
哈希存储 - 性能非常好的存储方案 - set
obj — 哈希函数 —> 哈希码(散列码) —> 对象在内存中存储的位置
文件 —> MD5 /SHA1/SHA256 --> 哈希码(数字指纹/数字签名)
- 设置哈希
hset stu1 id 1001
hset stu1 name zhongjiawei - 批量设置哈希
hmset stu2 id 1002 name zhangsan - 获取哈希
hget stu1 name - 批量获取哈希信息
hmget stu1 id name sex - 查看所有的值
hvals stu1
hgetall stu1
列表
- 插入列表元素
lpush numbers 10 20 30 40 50 60 - 取出列表元素
lpop numbers
集合
- 插入集合元素
sadd set1 10 20 10 10 30 40
sadd a 2 4 6 8
sadd b 1 2 3 4 5 6 - 获取集合元素
smembers set1 - 交集
sinter a b - 并集
sunion a b
有序集合
ZADD key score member [[score member] [score member] …]
- 插入有序集合元素
zadd phb 150 a 100 b 50 c 200 d - 从低到高输出
zrange phb 0 -1 - 从高到低输出
zrevrange phb 0 -1 - 从高到低输出(带值)
zrevrange phb 0 -1 withscores - 为有序集 key 的成员 member 的 score 值加上增量(比如票数增加了5000)
zincrby phb 5000 a
地理信息运算
-
新增地理位置:
geoadd map 120.12792 30.228932 xihu 120.169373 30.259392 hubinyintai -
计算两点地理位置距离(直线距离,默认m):
geodist map xihu hubinyintai km -
计算以指定地理位置多少半径内的所有位置信息(显示距离):
georadius map 120.12792 30.228 10 km withdist
修复持久化文件
redis-check-rdb --fix dump.rdb
redis-check-aof --fix appendonly.aof
在python中使用redis
import redis
def main():
client = redis.Redis(host='127.0.0.1',port=6379)
#字符串
client.set('username','张三',ex=300)
print(client.ttl('username'))
print(client.get('username').decode())
client.set('zjw','300')
client.incr('zjw')
client.incrby('zjw',50)
print(int(client.get('zjw').decode()))
#哈希表
client.hset('stu1','id','1001')
client.hset('stu1','name','张三')
print(client.hgetall('stu1'))
print(client.hget('stu1','name').decode())
#列表
client.lpush('list1',10,20,30,40)
print(client.lrange('list1',0,-1))
#集合
client.sadd('set1',10,20,10,30,20)
print(client.smembers('set1'))
#有序集合
client.zadd('zset1',{'a':100,'b':50,'c':150})
print(client.zrange('zset1',0,-1))
print(client.zrevrange('zset1',0,-1,'withscores'))
#地理信息计算
client.geoadd('map','120.12792','30.228932','xihu','120.169373','30.259392','hubinyintai')
print(client.geodist('xihu','hubinyintai'))
if __name__ == '__main__':
main()