redis 使用

redis 安装之前有写过。这里就记录下redis的使用,方便以后查看。

1.打开redis服务
$ redis-server

2.进入redis
$ redis-cli
重新打开一个terminal。

3.使用python来操作redis用法

https://blog.csdn.net/jiede1/article/details/79807044

4.常用命令:

1.访问和查看
> help           # 命令行的帮助
> keys *         # 查看所有的key列表
> info           # 查看服务器信息。如占用系统内存,看其中的used_memory_human值
> select 2       # 切换到数据库2
2.增加字符串和数字记录

> set key1 "hello"       # 增加一条键值为key1,值为"hello"的字符串记录
> get key1               # 获取记录值
> set key2 1             # 增加一条数字记录key2
> INCR key2              # 让数字自增
3.列表记录命令

> LPUSH mylist a          # 增加一个列表记录mylist
> LPUSH mylist b          # 从左边插入列表
> RPUSH mylist c          # 从右边插入列表
> LRANGE mylist 0 3       # 输出列表记录,按从左到右的顺序从第0条读到第3条数据,一共四条数据。

4.使用连接池连接到Redis
>>> pool = redis.ConnectionPool(host='192.168.56.100', port=6379)
>>> conn = redis.Redis(connection_pool=pool)
>>> conn.set('hello','world')
True
>>> conn.get('hello')
b'world'
5.String
参数	描述
ex	过期时间(秒)
px	过期时间(毫秒)
nx	如果设置为True,则只有name不存在时,当前set操作才执行
xx	如果设置为True,则只有name存在时,岗前set操作才执行

#1.
setex(name, value, time)
设置过期时间/秒
>>> conn.setex('k','v',1)
True

#2.
psetex(name, time_ms, value)
设置过期时间/毫秒
>>> conn.psetex('k',10,'v')
True

#3.
mset(*args, **kwargs)
同时设置多个key/value

>>> conn.mset(k1='v1', k2='v2')
True
>>> conn.mset({'k1':'v1', 'k1':'v1'})
True

#4.
mget(keys, *args)
获取多个值(args必须是string格式)
>>> conn.mget('k1','k2')
[b'v1', b'v2']
# 传入列表
>>> conn.mget(['name','url'])
[b'ansheng', b'https://blog.ansheng.me']


#5. 
getrange(key, start, end)

通过索引的方式来获取value的值

>>> conn.set('key','value')
True
>>> conn.getrange('key', 1, 4)
b'alue'

#6.
setrange(name, offset, value)

根据索引修改value

>>> conn.set('n','123456789')
True
>>> conn.setrange('n', 0, 'a')
9
>>> conn.get('n')
b'a23456789'

#7.
strlen(name)

获取value的长度

>>> conn.set('name','安生')
True
>>> conn.strlen('name')
6

#8.
incr(name, amount=1)
对name的value进行自增,如果name不存在则创建,否则自增
>>> conn.get('number')
>>> conn.incr('number')
1
>>> conn.get('number')
b'1'
>>> conn.incr('number')
2
>>> conn.incr('number', 10)
12

#9.
decr(name, amount=1)
自减,同自增一样,如果进行自减的value不是整数就报错

>>> conn.set('n', 10)
True
>>> conn.decr('n')
9
>>> conn.decr('n', 9)
0

#10.
incrbyfloat(name, amount=1.0)
同上,支持浮点数自增

>>> conn.incrbyfloat('number', 1.5)
13.5
>>> conn.incrbyfloat('number', 1.1)
14.6

#11.
append(key, value)
在value后面追加内容
>>> conn.set('blog','https://blog.ansheng.me')
True
>>> conn.append('blog','/')
26
>>> conn.get('blog')
b'https://blog.ansheng.me/'
6.LIST

##1
lpush(name, *values)
在最左边添加值
>>> conn.lpush('li', 11,22,33)
3
>>> conn.lindex('li', 0)
b'33'

##2 rpush(name, *values)  在最右边添加值
>>> conn.rpush('lli', 11,22,33)
3
>>> conn.lindex('lli', 0)
b'11'
错误情况:
>>>conn.rpush('newlist',[7,5,'a'])

>>> redis.exceptions.DataError: Invalid input of type: 'list'. Convert to a byte, string or number first.
value的格式不能是list,元组和字典等格式。

##3  删除元素
> lrem(key count value)
从key对应list中删除count个和value相同的元素。count为0时候删除全部,count为正,则删除匹配count个元素,如果为负数,则是从右侧扫描删除匹配count个元素。复杂度是O(N),N是List长度,因为List的值不唯一,所以要遍历全部元素,而Set只要O(log(N))。

> lpop key 
从list的头部删除元素,并返回删除元素。如果key对应list不存在或者是空返回nil,如果key对应值不是list返回错误。

> rpop key
同上,删除key右侧第一个元素

>ltrim(name, start, end)
在name对应的列表中移除没有在start-end索引之间的值

##4 lindex(name, index)   获取name中对应索引的值
>>> conn.lindex('li', 0)
b'aa'

##5 llen(key)
获取某key对应的列表中的元素个数。
>>> conn.llen('li')
5

##6 linsert(name, where, refvalue, value)   在name的某一个值前面或者后面插入一个新值
原始的列表value是
0
1
2
4
6
>>> conn.linsert('li','AFTER','11','cc')
6

##7 lset(name, index, value)

对name中index索引位置的值进行重新赋值

>>> conn.lindex('li', 4)
b'cc'
>>> conn.lset('li', 4, 'hello')
True
>>> conn.lindex('li', 4)
b'hello'

Python标准库系列之Redis模块 : http://python.jobbole.com/87305/
Python操作Redis,你要的都在这了! : https://cloud.tencent.com/developer/article/1151834

posted @ 2019-05-24 15:54  P_PlusUltra  阅读(406)  评论(0编辑  收藏  举报