Redis数据库
Redis 命令参考
本文只记录部分常用命令,具体命令请进入参考网站,如下:
参考网站:http://redisdoc.com/
Redis基本原理
Redis的基本使用
Redis默认有16个数据库,初始默认使用0号库,编号是0…15
- 添加key-value [set]
- 查看当前redis的所有key [keys*]
- 获取key对应的值 [get key]
- 切换redis数据库 [select index]
- 查看当前数据库的key-value数量 [dbsize]
- 清空当前数据库的key-value和清空所有数据库的key-value [flushdb flushall]
1 | 127.0.0.1:6379> set key1 hello |
Redis的增删改查操作
Redis的五大基本数据类型
String(字符串)、Hash(哈希)、List(列表)、Set(集合)、zset(sorted set 有序集合)
String(字符串)
string是redis最基本的类型,一个key对应一个value。
string类型时二进制安全的。除普通的字符串外,也可以存放图片等数据。
redis中字符串一个value最大时512M
1 | 127.0.0.1:6379> set name 夜行书生 |
del
1 | 127.0.0.1:6379> set name ck |
setex键秒值
将value关联到key,将key的生存时间设置以秒为单位,如果key已经存在,setex命令将覆盖救值。生存时间一到,删除key-value
1 | 127.0.0.1:6379> setex address 10 swun |
mset
同时设置一个或多个key-value对
mget
同时获取一个或多个key-value
1 | 127.0.0.1:6379> mset key1 1 key2 2 key3 3 |
Hash(哈希,类似于go中的map)
Redis hash是一个键值对集合,是一个string类型的field(字段)和value(值)的映射表,hash特别适合用于存储对象(结构体)。
hset
存放一个user字段信息
1 | 127.0.0.1:6379> hset user name ck |
hmset
存放一个或多个user字段信息
1 | 127.0.0.1:6379> hmset user sex 22 job coder |
hget
获取一个user字段信息
1 | 127.0.0.1:6379> hget user name |
hmget
获取一个或多个user字段信息
1 | 127.0.0.1:6379> hmget user name age job |
hgetall
获取所有的user字段信息
1 | 127.0.0.1:6379> hgetall user |
hlen
统计一个hash有几个元素
1 | 127.0.0.1:6379> hlen user |
hexists
查看哈希表中的字段是否存在
1 | 127.0.0.1:6379> hexists user name |
hdel
删除一个或多个user字段信息
1 | 127.0.0.1:6379> hdel user name age |
List(列表)
列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列的头部或者尾部。
List的本质是一个链表,List的元素是有序的,元素的值是可以重复的。
lpush/rpush
从左/右边添加一个或多个元素
1 | 127.0.0.1:6379> lpush city beijin tianjin chengdu |
lrange
读取一个或多个元素(只有lrange一种读法)
1 | 0和-1代表start和end下标。-1代表列表最后一个元素,-2代表倒数第二的元素# |
lindex
按照索引下标获取元素
1 | 127.0.0.1:6379> lindex city 1 |
llen
返回列表key的长度
1 | 127.0.0.1:6379> llen city |
lpop/rpop
读取左/右边第一个元素,并移除
1 | 127.0.0.1:6379> lpop city |
linsert
在链表指定元素之前或之后插入元素
1 | 127.0.0.1:6379> linsert city after beijin yinchuan |
del
删除链表
1 | 127.0.0.1:6379> del city |
Set/Zset(集合/有序集合)
Set是string类型的无序集合
Zset是string类型的有序集合
Set存放很多字符串元素,字符串元素是无序的,而且元素的值不能重复
这里主要说明set集合
sadd
添加集合中的元素
1 | 127.0.0.1:6379> sadd id 001 002 003 |
smembers
从集合中取出所有的元素,是无序的
1 | 127.0.0.1:6379> smembers id |
sismember
判断值是否是集合中的元素
1 | 127.0.0.1:6379> sismember id 055 |
srem
删除指定值
1 | 127.0.0.1:6379> srem id 001 002 |
使用go语言操作redis数据库
安装指令
1 | go get github.com/gomodule/redigo/redis |
连接redis
1 | redis.Dial("tcp","127.0.0.1:6379") |
Set/Get接口
向redis中写入数据string [key - value]
1 | _ , err = conn.Do("set" , "id" , "001")//写入一个数据 |
向redis中读取数据string [key - value]
1 | //因为rep是空接口类型,id对应是string类型,需要转换 |
向redis中写入数据hash类型
1 | _ , err = conn.Do("Hset" , "user" , "name" , "夜行书生")//写入一个数据 |
向redis中读取数据hash类型
1 | NameString , err := redis.String(conn.Do("Hget" ,"user", "name"))//读取一个数据 |
Redis连接池
流程如下:
- 事先初始化一定数量的连接,放入连接池
- 当Go需要操作redis时,直接从redis连接池中取出连接即可
- 这样可以节省临时获取redis连接的时间,从而提高效率
核心代码:
1 | var pool *redis.Pool |
使用案例:
1 | //定义全局pool |