python之redis的增删改查

Redis简单增删改查例子

例一:字符串的增删改查

#增加一个key为ay_key的值
127.0.0.1:6379> set ay_key "ay"
OK
#查询ay_key的值
127.0.0.1:6379> get ay_key
"ay"
#修改ay_key的值
127.0.0.1:6379> set ay_key "new_ay"
OK
127.0.0.1:6379> get ay_key
"new_ay"
#修改ay_key名称
127.0.0.1:6379> rename ay_key new_ay_key
OK
127.0.0.1:6379> keys *
1) "new_ay_key"
#删除ay_key
127.0.0.1:6379> del ay_key
(integer) 0
#查询是否存在ay_key  0
127.0.0.1:6379> exists ay_key
(integer) 0

  

例二:Set集合的增删改查

#删除当前选择数据库中的所有key
127.0.0.1:6379> flushdb
OK
#生成set集合,添加4个数据
127.0.0.1:6379> sadd set_ay_key "ay" "al" "xy" "xl"
(integer) 4
#查询set里面所有值
127.0.0.1:6379> smembers set_ay_key
1) "xy"
2) "al"
3) "ay"
4) "xl"
#删除value为"xl" , 返回 1  如果没有返回 0
127.0.0.1:6379> srem set_ay_key "xl"
(integer) 1
127.0.0.1:6379> smembers set_ay_key
1) "xy"
2) "al"
3) "ay"
#添加value为"xl"
127.0.0.1:6379> sadd set_ay_key "xl"
(integer) 1
127.0.0.1:6379> smembers set_ay_key
1) "xy"
2) "al"
3) "ay"
4) "xl"
#添加value为"xl"  添加不进去,但也不报错,set是不允许重复的
127.0.0.1:6379> sadd set_ay_key "xl"
(integer) 0
#不多解释
127.0.0.1:6379> sadd set_ay_key "xl"
(integer) 0
#不多解释
127.0.0.1:6379> sadd set_ay_key "xl"
(integer) 0

  

例三:List集合的增删改查

#添加key为list_ay_key的list集合
127.0.0.1:6379> lpush list_ay_key "ay" "al" "xy" "xl"
(integer) 4
#查询key为list_ay_key的集合
127.0.0.1:6379> lrange list_ay_key 0 -1
1) "xl"
2) "xy"
3) "al"
4) "ay"
#往list尾部添加元素
127.0.0.1:6379> rpush list_ay_key "together"
(integer) 5
#往list头部添加元素
127.0.0.1:6379> lpush list_ay_key "first"
(integer) 6
#查询list集合
127.0.0.1:6379> lrange list_ay_key 0 -1
1) "first"
2) "xl"
3) "xy"
4) "al"
5) "ay"
6) "together"
#更新index为0的值	
127.0.0.1:6379> lset list_ay_key 0 "update_first"
OK
127.0.0.1:6379> lrange list_ay_key 0 -1
1) "update_first"
2) "xl"
3) "xy"
4) "al"
5) "ay"
6) "together"
#删除index为1上的值
127.0.0.1:6379> lrem list_ay_key 1 "update_first"
(integer) 1
127.0.0.1:6379> lrange list_ay_key 0 -1
1) "xl"
2) "xy"
3) "al"
4) "ay"
5) "together"

  

例四:Hash集合(类似Java)的增删改查

127.0.0.1:6379> flushdb
OK
#生成hash集合,并添加key 为uuid_one value 为"12345"
127.0.0.1:6379> hset hash_ay_key "uuid_one" "12345"
(integer) 1
127.0.0.1:6379> hlen hash_ay_key
(integer) 1
#返回集合所有的key
127.0.0.1:6379> hkeys hash_ay_key
1) "uuid_one"
#返回集合所有value
127.0.0.1:6379> hvals hash_ay_key
1) "12345"
#集合添加值
127.0.0.1:6379> hset hash_ay_key "uuid_two" "22222"
(integer) 1
#集合添加值
127.0.0.1:6379> hset hash_ay_key "uuid_three" "33333"
(integer) 1
#获得key为uuid_one的值
127.0.0.1:6379> hget hash_ay_key  uuid_one
"12345"
#删除key为uuid_three的值
127.0.0.1:6379> hdel hash_ay_key uuid_three
(integer) 1
127.0.0.1:6379> hkeys hash_ay_key
1) "uuid_one"
2) "uuid_two"
#获得所有,包括key和value
127.0.0.1:6379> hgetall hash_ay_key
1) "uuid_one"
2) "12345"
3) "uuid_two"
4) "22222"
#更新key为uuid_one的值
127.0.0.1:6379> hset hash_ay_key uuid_one "11111"
(integer) 0
127.0.0.1:6379> hset hash_ay_key "uuid_one" "11111"
(integer) 0
127.0.0.1:6379> hgetall hash_ay_key
1) "uuid_one"
2) "11111"
3) "uuid_two"
4) "22222"

  

例四:SortedSet集合的增删改查

SortedSet是有序的set集合

#sorted set添加值ay 排序值为 1
127.0.0.1:6379> zadd zset_ay_key 1 "ay"
(integer) 1
127.0.0.1:6379> zadd zset_ay_key 2 "al"
(integer) 1
127.0.0.1:6379> zadd zset_ay_key 3 "xy"
(integer) 1
127.0.0.1:6379> zadd zset_ay_key 4 "xl"
(integer) 1
#查询所有的值
127.0.0.1:6379> zrange zset_ay_key 0 -1
1) "ay"
2) "al"
3) "xy"
4) "xl"
#删除所有的值
127.0.0.1:6379> zrem zet_ay_key "xl"
(integer) 0
127.0.0.1:6379> zrange zset_ay_key 0 -1
1) "ay"
2) "al"
3) "xy"
4) "xl"

  

有序集合参考下面文章:

http://www.runoob.com/redis/redis-sorted-sets.html

 

各种数据类型及代码示例:

"""Redis数据类型:
1. <set key value>
    类型	:   String(字符串)	
    简介:   二进制安全	
    特性	:   可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M
    场景:   /

2. <hset major_key key value>
    类型	:   Hash(字典)
    简介:   键值对集合,即编程语言中的Map类型
    特性	:   适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去)
    场景:   存储、读取、修改用户属性

3. <头部:lpush key value1 value2 ... 末尾:rpush key value1 value2 ...> 可添加一个或多个值
    类型	:   List(列表)
    简介:   链表(双向链表)
    特性	:   增删快,提供了操作某一段元素的API
    场景:   1.最新消息排行等功能(比如朋友圈的时间线) 2.消息队列

4. <sadd key member1 member2 ...> 可添加一个或多个值
    类型	:   Set(集合)
    简介:   哈希表实现,元素不重复
    特性	:   1.添加、删除,查找的复杂度都是O(1) 2.为集合提供了求交集、并集、差集等操作
    场景:   1.共同好友 2.利用唯一性,统计访问网站的所有独立ip 3,好用推荐时,根据tag求交集,大于某个阈值就可以推荐

5. <zadd key score1 member1 score2 member2 ...> 可添加一个或多个值
    类型	:   Sorted Set(有序集合)
    简介:   将Set中的元素增加一个权重参数score,元素按score有序排列
    特性	:   数据插入集合时,已经进行天然排序
    场景:   	1.排行榜 2.带权重的消息队列

键值相关命令:
1.  keys *                   查看当前所有的key
2.  exists name              查看数据库是否有name这个key
3.  del name                 删除key name
4.  expire confirm 100       设置confirm这个key100秒过期
5.  ttl confirm              获取confirm 这个key的有效时长
6.  select 0                 选择到0数据库 redis默认的数据库是0~15一共16个数据库
7.  move confirm 1           将当前数据库中的key移动到其他的数据库中,这里就是把confire这个key从当前数据库中移动到1中
8.  persist confirm          移除confirm这个key的过期时间
9.  randomkey                随机返回数据库里面的一个key
10. rename key2 key3         重命名key2 为key3
11. type key2                返回key的数据类型

服务器相关命令:
1.  ping                     PING返回响应是否连接成功
2.  echo                     在命令行打印一些内容
3.  select                   0~15 编号的数据库
4.  quit                     /exit 退出客户端
5.  dbsize                   返回当前数据库中所有key的数量
6.  info                     返回redis的相关信息
7.  config get dir/*         实时传储收到的请求
8.  flushdb                  删除当前选择数据库中的所有key
9.  flushall                 删除所有数据库中的数据库

Tips:
打开cmd输入 redis-cli.exe 即可进入redis命令行
"""
# -*- coding:utf-8 -*-
from redis import StrictRedis

__author__ = 'Evan'


class RedisHandle(object):

    def __init__(self, host='localhost', port=6379):
        self.host = host
        self.port = port
        # 连接redis数据库
        self.client = StrictRedis(host=self.host, port=self.port, db=0, password='')
        print('连接redis数据库成功!')

    def write_data(self, key, value):
        self.client.set(key, value)

    def get_data(self, key):
        value = self.client.get(key)
        return value

    def get_all_data(self):
        all_keys = []
        if self.client.keys():
            for i in self.client.keys():
                key = i.decode('ascii')
                value = self.get_data(i).decode('ascii')
                all_keys.append({key: value})
        else:
            all_keys = None
        print('find total items:\n{}'.format(all_keys))
        return all_keys

    def delete_data(self, key):
        self.client.delete(key)
        print('delete the key: {}'.format(key))


if __name__ == '__main__':
    redisDb = RedisHandle()
    redisDb.write_data('name', 'evan')
    redisDb.get_all_data()
    redisDb.delete_data('name')
    redisDb.get_all_data()

  

posted @ 2020-02-25 16:03  季末并不寂寞  阅读(327)  评论(0)    收藏  举报